Я относительно новый пользователь Ansible. Я использую его для организации нескольких групп серверов Linux. Сейчас я расширяю это использование, чтобы использовать модуль homebrew Ansible .
Используя модуль homebrew, я хочу подтвердить, что список пакетов установлен на моих компьютерах с macOS. Пока что лучшее, что я могу сделать, это создать отдельные роли для каждого пакета, каждая из которых будет напоминать:
- name: "htop"
homebrew:
name: htop
state: present
Похоже, что должен быть способ предоставить список пакетов в одной роли, который я видел раньше при использовании модуля Ansible apt.
Есть какие-нибудь советы? Должен ли сам модуль homebrew явно поддерживать такого рода операции, или, возможно, есть что-то более фундаментальное для Ansible или даже самого Python, которое предоставляет то, что я ищу?
PS - Вы можете с уверенностью предположить, что все мои машины с macOS серверы.
Более или менее я нашел решение. Моя роль теперь выглядит так, и она работает:
- name: "brew favourites"
homebrew: name={{ item }} state=present
with_items:
- htop
- nmap
- telnet
- wget
- nginx
Расширенные примечания
Я действительно не знаю, какой механизм отвечает за эту работу. Мне кажется, что это вне Ansible и на самом деле это питонизм (это 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 modules 'это был не pkg , а вместо name .
Точно так же оба модуля Ansible имеют параметр состояния, но для apt соответствующее значение было установлено , а для homebrew оно присутствует .
Так что я думаю, что такой синтаксис применим к Ansible в глобальном контексте. И модули не должны знать об этом или явно поддерживать это. Мощный.