Пропустить загрузку пакета, если он уже установлен - PullRequest
0 голосов
/ 24 октября 2018

Я использую ansible для установки пакета deb, и я не хочу загружать удаленный файл, если пакет уже установлен.В настоящее время я делаю так:

- name: Check if elasticsearch installed
  become: true
  stat: path=/etc/elasticsearch/elasticsearch.yml
  register: st

- name: Install elasticsearch
  become: yes
  apt:
    deb: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.12.deb
    update_cache: true
    state: present
  when: not st.stat.exists

Есть ли лучший способ пропустить загрузку пакета deb, если он уже установлен?

1 Ответ

0 голосов
/ 25 октября 2018

Вы захотите package_facts или, конечно, просто обмануть и раскошелиться на что-то вроде command: dpkg --search elasticsearch

- name: gather installed packages
  package_facts:
- name: Install elasticsearch
  when: elasticsearch not in ansible_facts.packages

Если ваш вопрос не о том, как это сделать, когдаasticsearchмог быть установлен вручную, а не через dpkg, и в этом случае ваш подход stat: и register: является разумным.Возможно, вы даже захотите использовать with_items:, чтобы проверить несколько мест, где файл мог быть установлен, в зависимости от ваших обстоятельств

...