Опиши структуру playbook в Ansible
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Структура Ansible Playbook
Ansible playbook — это файл YAML, который определяет серию задач (tasks) для выполнения на удаленных хостах. Это основной способ описания конфигурации и автоматизации в Ansible.
Базовая структура
---
- name: Название play
hosts: webservers
become: yes
gather_facts: yes
vars:
app_version: "1.0.0"
app_port: 8080
tasks:
- name: Установить пакеты
apt:
name:
- nginx
- curl
state: present
when: ansible_os_family == "Debian"
- name: Стартовать сервис nginx
service:
name: nginx
state: started
enabled: yes
handlers:
- name: Перезагрузить nginx
service:
name: nginx
state: restarted
post_tasks:
- name: Проверка здоровья
uri:
url: "http://localhost:{{ app_port }}"
status_code: 200
Ключевые компоненты
name — описание play, выводится при выполнении.
hosts — целевые хосты из inventory. Может быть группа или конкретный хост.
become — повышение привилегий (sudo). Если true, используется become_user.
gather_facts — автоматически собирать информацию о хостах через setup модуль.
vars — переменные, доступные в пределах play.
tasks — основной список действий (модули Ansible), выполняются последовательно.
handlers — срабатывают при notify только если была изменена конфигурация.
post_tasks — выполняются после основных задач, для проверок и cleanup.
Структура задачи
- name: Описание
- register: сохраняет результат в переменную
- when: условное выполнение
- notify: вызывает handler при изменении
- tags: для выборочного запуска
Лучшие практики
- Использовать роли для организации playbooks
- Разделять переменные в отдельные файлы
- Использовать идемпотентные модули
- Добавлять информативные имена задач
- Использовать handlers вместо прямых рестартов
- Тестировать с флагом --check (dry-run режим)
В production я часто организую playbooks в роли и применяю их через комбинацию Ansible с GitOps для управления инфраструктурой.