Как запустить несколько Playbooks в порядке с Ansible?

16

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

ansible-playbook playbook_name.ymlСначала я хотел написать сценарий оболочки, который выполнял бы и дублировал по одной записи для каждой пьесы, которую мне нужно запустить.

Существует ли более умный / лучший способ сделать это с помощью мастер-книги и, если да, как бы это выглядело (примеры приветствуются).

Я мог бы написать одну монолитную пьесу, которая делает все это, но есть некоторые пьесы, которые сначала запускаются от имени пользователя root, а затем от имени пользователя sudo.

nulltek
источник
2
используйте include в вашей главной игровой
книге
1
Чтобы обработать случай запуска от имени пользователя root, а затем от имени пользователя sudo, вы можете использовать функцию блока - поместить become:деталь в конец каждого блока. Возможно, вам придется создать новую игру, чтобы переключить пользователя подключения с пользователя root на пользователя sudo.
RichVel

Ответы:

15

Создайте много подпрограмм и объедините их с помощью операторов включения.

- include: playbook-one.yml
- include: playbook-two.yml

Если ваши пьесы должны работать по порядку и если все они обязательны, создайте основную книгу и включите файлы с заданиями. Сборник пьес всегда должен быть закрытым процессом.

flxPeters
источник
2
не могли бы вы уточнить последнюю часть вашего ответа? что вы подразумеваете под «сборником пьес, всегда должен быть закрытый процесс». ?
Майк Велла
1
Есть ли способ указать все пьесы, используя регулярные выражения? Например:- include : books/*.yml
blueskin
8
Похоже, includeне рекомендуется. docs.ansible.com/ansible/latest/playbooks_reuse.html Я думаю, что import_playbook: fooэто правильный путь, но я не очень опытный.
Андрей
11

Для более новых версий Ansilbe вы можете создать множество вспомогательных книг и объединить их с помощью операторов import_playbook:

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
Питер Сенна
источник