Задачи, нужные нескольким плейбукам, выносят в роль. Плейбук тогда только называет роль и задаёт свои значения.
Роль — каталог roles/<имя>/ рядом с плейбуком. В нём подкаталоги с постоянными именами, и в каждом Ansible читает файл main.yml:
| Где | Что |
|---|---|
tasks/main.yml |
задачи — тот же список, что под tasks: плея |
handlers/main.yml |
обработчики |
templates/ |
шаблоны: src: index.html.j2 в задаче роли ищется здесь |
defaults/main.yml |
значения переменных по умолчанию |
Плей вызывает роль списком roles, а свои значения задаёт в vars, как раньше (в Вики):
Задачи роли выполняются так же, как задачи плея, а обработчик роли срабатывает по notify в конце плея. В выводе перед именем задачи стоит имя роли: TASK [site : Страница]. Значение из defaults/main.yml роль берёт, когда его не задал никто другой: телефон, общий для всех сайтов, записывают там один раз.
Несколько плейбуков подряд прогоняет одна команда — ansible-playbook shop.yml blog.yml docs.yml. PLAY RECAP она печатает после каждого плейбука с нарастающим счётом: последний считает все три.
Переведи плейбуки на роль
В ~/ansible-lab коллега начал роль roles/site и перевёл на неё shop.yml. Переведи на роль blog.yml и docs.yml, а потом смени телефон поддержки на 8-800-555-02-02 сразу для всех трёх сайтов одной правкой. Прогони все три плейбука.
Цели · 0 из 2
- Перевести blog.yml и docs.yml на роль site ещё не выполнена
- Сменить телефон на всех трёх сайтах одной правкой ещё не выполнена