Какова лучшая практика для обеспечения идемпотентности для загрузки двоичного файла с Ansible? - PullRequest
2 голосов
/ 29 апреля 2019

Я пишу сборник игр для установки стека Elastic, в котором каждый компонент стека разделен на отдельные роли.Во время выполнения playbook я использую модуль unarchive , чтобы извлечь двоичный файл от поставщика и распаковать его.

Что-то вроде:

- name: Install | Get binary
  unarchive:
    src: "{{ elasticsearch_download_url }}"
    dest: "{{ base_dir }}"
    remote_src: yes


Проблема, с которой я сталкиваюсь, заключается в идемпотентности загрузки бинарного файла.Насколько мне известно, истинная идемпотентность во время прогона пьесы была бы набором "ок" ответов и никаких "измененных" ответов.

Есть ли лучшая практика, когдаЧто касается обеспечения идемпотентности при загрузке двоичных файлов?Я думал, может быть, проверка для существующей установки с использованием когда: ключ, но я не на 100% на этом.

Спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Существует несколько возможных решений вашего общего вопроса (в зависимости, например, от роли, которая позволяет управлять обновлениями, отключать загрузку и разархивирование и т. Д.).

В вашем конкретном случае и принимая как должное, что ваш elasticsearch_download_url не меняется, вы можете легко добиться этого, используя опцию creates модуля unarchive :

- name: Install | Get binary
  unarchive:
    src: "{{ elasticsearch_download_url }}"
    dest: "{{ base_dir }}"
    remote_src: yes
    creates: "{{ base_dir }}/elasticsearch-x.y.z"

Каталог в моем примере полностью создан для этого случая и должен соответствовать точному имени созданного каталога.

Если вас интересует чуть более сложный пример, который обрабатывает обнаружение и обновление версий для Nexus, я получаю роль, которая реализовала все это как функции: https://github.com/ansible-ThoTeam/nexus3-oss/blob/master/tasks/nexus_install.yml

0 голосов
/ 29 апреля 2019

Используйте get_url с параметром " контрольная сумма ".

Из документации:

- name: Download file with check (sha256)
  get_url:
    url: http://example.com/path/file.conf
    dest: /etc/foo.conf
    checksum: sha256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...