Как использовать модуль доморощенного 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 в глобальном контексте. И модули должны иметь нулевую осведомленность или явную поддержку этого. Мощный.