Структура playbook
Тема дорожной карты · Ansible
Структура playbook в Ansible следует строгой YAML-иерархии: playbook — это список play, каждый play нацеливается на группу inventory через ключ hosts и содержит упорядоченные секции — vars, pre_tasks, roles, tasks и post_tasks, — выполняемые в этой последовательности. Каждая запись задачи должна содержать имя модуля и его аргументы, необязательное поле name для читаемости и управляющие ключевые слова вроде when, loop или notify. Большие playbook разбиваются на файлы меньшего размера с помощью import_playbook для статического включения или include_tasks/import_tasks для динамического включения внутри play. Поддержание единообразной, хорошо задокументированной структуры playbook — с чётко названными play, сгруппированными role и выделенными секциями handler — это основа удобной в сопровождении инфраструктуры-как-кода на Ansible.
Как это работает
Структура playbook — стандартная единица: YAML-файл со списком play; у каждого play — hosts, tasks, опционально pre_tasks/post_tasks/handlers/vars/roles. Задачи бегут последовательно per host; handlers — в конце play, только при триггере (notify). Strategy управляет параллелизмом: linear (дефолт — ждёт медленный), free (каждый хост так быстро, как может). Tags позволяют гонять подмножества (--tags backup); --start-at-task возобновляет после сбоя.
Когда применять
Всегда оборачивайте связанные операции в плейбук — даже если начинаете с одной задачи, растёт. pre_tasks — для setup, который должен идти первым; handlers — для идиомы "перезапустить X, если конфиг изменился"; tags — для частичных запусков. serial: 1 или serial: 25% — для постепенной выкатки (canary). Тестируйте --check --diff в CI против staging-inventory.
Типичные ошибки
Ловушки Структура playbook: длинные плейбуки без tags (нужно гонять всё для теста одной секции); ignore_errors: true повсюду (тихие сбои); нет block + rescue + always для error handling; баги отступов YAML (используйте линтер — ansible-lint); become: true на уровне play, когда нужен root только для одной задачи.
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…