Назад | Перейти на главную страницу

Как лучше всего ограничить задачу установки доступной для установки только в том случае, если пакет еще не присутствует

При создании playbook для бродячей коробки я хочу пропустить шаги установки, если пакет уже установлен. Это кажется таким распространенным сценарием, но не упоминается явно в условные документы насколько я могу судить.

Я запускаю playbook несколько раз во время тестирования и хочу установить пакеты условно, поэтому мне не нужно продолжать выполнять задачи, которые, как я знаю, работают, например

- name: Install useful packages
  yum: name={{ item }} state=present
  with_items:
    - "@development-tools"
    - git
    - curl
    - htop

Как мне добавить здесь условие, которое устанавливает только указанные выше пакеты, если они еще не установлены? Есть ли другое состояние, которое я могу использовать, или мне нужно вручную запустить что-то в оболочке, которое проверяет, установлены ли они в первую очередь? например что-то использующее yum list installed <packagename> или yum info <packagename>. Я бы предпочел не создавать задачу для каждого пакета, так как это станет громоздким, когда будет много пакетов для установки.

Ansible идемпотентен. Вы можете запускать модуль yum сколько угодно раз. Если нечего устанавливать, эта задача завершится со статусом изменено = ложно, и пакеты не будут повторно установлены.