Как использовать модуль доморощенного Ansible, чтобы утверждать список установленных пакетов

Я относительно новый пользователь Ansible. Я использую его для организации нескольких групп серверов Linux. Сейчас я расширяю это использование, чтобы использовать модуль доморощенного Ansible.

Используя модуль homebrew, я хочу утверждать, что список пакетов установлен на мои коробки MacOS. Пока что лучшее, что я могу сделать, - это создать отдельные роли для каждого пакета, каждая из которых будет выглядеть следующим образом:

- name: "htop"
  homebrew:
    name: htop
    state: present

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

Какие-нибудь советы? Должен ли сам модуль homebrew явно поддерживать такую ​​операцию, или, возможно, есть что-то более фундаментальное для Ansible или даже самого Python, которое обеспечивает то, что я ищу?

PS - Вы можете смело предположить, что все мои машины с macOS - это серверы

1 ответ

Решение

Я нашел решение, более или менее. Моя роль теперь выглядит так, и это работает:

- name: "brew favourites"
  homebrew: name={{ item }} state=present
  with_items:
    - htop
    - nmap
    - telnet
    - wget
    - nginx

Расширенные заметки

Я действительно не знаю, какой механизм отвечает за эту работу. Я чувствую, что это за пределами Ansible и на самом деле Pythonism (это Lamda?). Что бы это ни было, оно могло бы служить шаблоном для общего решения такого рода вещей.

Я попробовал описанное выше, увидев нечто подобное, описанное для определения списка пакетов apt, такой подход выглядит так:

- name: "Asserting apt packages"
  apt: pkg={{ item }} state=installed
  with_items:
    - aptitude
    - vim
    - htop
    - nmap
    - curl
    - screen
    - open-vm-tools

Таким образом, обратите внимание, что в модуле apt мне нужно было перечислить много пакетов для параметра pkg. В контексте модулей homebrew это был не pkg, а имя.

Аналогично, оба модуля Ansible имеют параметр состояния, но для apt было установлено соответствующее значение, а в homebrew оно присутствует.

Так что я думаю, что этот вид синтаксиса применим к Ansible в глобальном контексте. И модули должны иметь нулевую осведомленность или явную поддержку этого. Мощный.

Другие вопросы по тегам