Что запускает что в Ansible: роль запускает Playbook, или Playbook запускает роль?

«Что запускает что в Ansible: роль запускает Playbook, или Playbook запускает роль?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.