Короткий ответ
Playbook — это список одного или нескольких "play", каждый из которых задаёт целевые хосты (hosts), опционально режим повышения привилегий (become) и список задач (tasks), где каждая задача вызывает конкретный модуль с параметрами.
Как это работает подробнее
Ansible выполняет play последовательно сверху вниз, а внутри play — задачи по порядку на всех целевых хостах параллельно (с учётом forks); каждая задача — пара "имя модуля + аргументы", и её результат (changed/ok/failed) влияет на то, сработают ли связанные handlers.
Пример кода
playbook.yml
- name: Установить и запустить nginx
hosts: web
become: true
tasks:
- name: Установить пакет nginx
ansible.builtin.apt:
name: nginx
state: present
- name: Убедиться, что nginx запущен
ansible.builtin.service:
name: nginx
state: started
enabled: trueЧто использовать на практике
- Практика. play обычно группируют по логическому назначению (например, отдельный play для настройки firewall, отдельный — для деплоя приложения); имена задач (
name:) важны для читаемости вывода и логов выполнения.
Подводные камни
- Ошибка. смешивать в одном play задачи, относящиеся к разным ролям серверов, без разделения по
hosts:; забыватьbecome: trueтам, где модулю нужны root-права, из-за чего задача падает с ошибкой доступа.