Linux Labs

Автоматизация: Git и Ansible / Ступень 7 из 8

Роли, переменные и секреты

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · на машине · 7 мин

Роль: задачи в одном месте

Задачи, нужные нескольким плейбукам, выносят в роль. Плейбук тогда только называет роль и задаёт свои значения.

Роль — каталог roles/<имя>/ рядом с плейбуком. В нём подкаталоги с постоянными именами, и в каждом Ansible читает файл main.yml:

Где Что
tasks/main.yml задачи — тот же список, что под tasks: плея
handlers/main.yml обработчики
templates/ шаблоны: src: index.html.j2 в задаче роли ищется здесь
defaults/main.yml значения переменных по умолчанию

Плей вызывает роль списком roles, а свои значения задаёт в vars, как раньше (в Вики):

yaml
- name: Сайт shop
  hosts: web
  become: true
  vars:
    site_name: shop
    site_port: 8081
  roles:
    - site

Задачи роли выполняются так же, как задачи плея, а обработчик роли срабатывает по 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 ещё не выполнена
  • Сменить телефон на всех трёх сайтах одной правкой ещё не выполнена

Цели шага

0 из 2
  • Перевести blog.yml и docs.yml на роль site — ещё не выполнена
  • Сменить телефон на всех трёх сайтах одной правкой — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Перевести blog.yml и docs.yml на роль site — ещё не выполнена
  • Сменить телефон на всех трёх сайтах одной правкой — ещё не выполнена
Загрузка…