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


16

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

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

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

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


2
используйте include в вашей главной игровой
книге

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

Ответы:


15

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

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.