Ответ
Playbook запускает роли. Это фундаментальная концепция организации кода в Ansible.
- Playbook (
deploy_web.yml) — это точка входа, «оркестратор». Он определяет на каких хостах и в каком порядке выполнять задачи. Playbook содержит один или несколькоplay. - Роль (
nginx,common) — это модуль, содержащий логически сгруппированные задачи, шаблоны, файлы, переменные и обработчики. Роль — это переиспользуемый строительный блок.
Аналогия: Playbook — это сценарий фильма (действие 1: настройка сервера, действие 2: установка Nginx). Роли — это актеры с заранее подготовленными действиями (роль «системный администратор» знает, как настроить yum, роль «веб-мастер» знает, как настроить Nginx). Playbook вызывает этих актеров в нужном порядке.
Пример:
# playbook.yml - ЗАПУСКАЕТ роли
- name: Configure web servers
hosts: webservers # Целевые хосты
become: yes # Повышение прав
roles: # Ключевое слово для импорта ролей
- role: common # Сначала выполняется роль 'common' (базовая настройка ОС)
- role: nginx # Затем роль 'nginx' (установка и конфигурация веб-сервера)
- name: Configure database servers
hosts: dbservers
roles:
- role: common
- role: postgresql
Порядок выполнения внутри роли nginx (если он определен) будет таким: tasks/main.yml -> handlers/main.yml. Но запускает всю эту последовательность Playbook.