Я относительно новый пользователь Ansible. Я использую его для организации нескольких групп серверов Linux. Сейчас я расширяю это использование, чтобы использовать Модуль доморощенного 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, Я хотел, чтобы для упак. параметр. в самодельные модуликонтекст, это не было упак., но вместо того, чтобы название.
Аналогично, оба модуля Ansible имеют параметр состояния, но для apt соответствующее значение было установлены, а с домашним пивом это настоящее время.
Поэтому я думаю, что такой синтаксис применим к Ansible в глобальном контексте. И модули не должны знать об этом или явно поддерживать это. Мощный.