Ansible -playbook, когда deb не установлен, установить - PullRequest
0 голосов
/ 03 октября 2019

я пытаюсь написать playbook, и я хочу проверить, установлен ли пакет deb и, если он не установлен, установить

, поэтому я пока пытался использовать модуль package_facts, и я не могу понять этоout

   - name: Gather package facts
     package_facts:
       manager: auto

   - name: Debug if package is present
     debug:
       msg: 'yes, mypackage is present'
     when: '"besagent" in ansible_facts.packages'
     register: besagent

   - name: Debug if package is absent
     debug:
       msg: 'no, mypackage is absent'
     when: '"besagent" not in ansible_facts.packages'

и это команда для установки deb

- name: Install_BigFix_DEB
     apt: deb="/usr/BigFix/BESAgent-9.5.11.191-debian6.amd64.deb"
     sudo: true

Итак, я вижу, установлен пакет или нет, и у меня есть команда для установки пакета, но как это сделать? Я делаю это автоматически. Если агент BigFix не установлен, то установить агент?

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

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вам не нужно проверять, установлен ли пакет или нет.

Об этом позаботится модуль apt.

Если пакет уже установлен, apt ничего не сделает и вернет status: ok,

, если нет, он установит его и вернет status: changed.

0 голосов
/ 03 октября 2019

Операции Ansible носят идемпотентный характер. Если вы используете модули Ansible, вам не нужно проверять, установлен ли пакет deb или нет. Ansible позаботится об этом. Если пакет не установлен, он будет установлен. Иначе это будет пропущено.

Вы можете напрямую использовать

- name: Install_BigFix_DEB
  apt: deb="/usr/BigFix/BESAgent-9.5.11.191-debian6.amd64.deb"
  sudo: true

Согласно Ansible document : операция является идемпотентной, если результат ее однократного выполнения точно такой же, как результат выполненияэто многократно без каких-либо вмешательств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...