Ответ
Ansible playbooks пишутся на YAML (YAML Ain't Markup Language). Это декларативный, человекочитаемый формат для описания конфигураций, задач и рабочих процессов автоматизации.
Пример простого playbook:
---
- name: Install and start Nginx
hosts: web_servers
become: yes
tasks:
- name: Install Nginx package
apt:
name: nginx
state: present
update_cache: yes
- name: Ensure Nginx service is running
service:
name: nginx
state: started
enabled: yes
Ключевые особенности:
- Отступы критичны: Для структурирования используются пробелы (обычно 2), табы не допускаются.
- Основные элементы: Playbook состоит из одного или нескольких plays. Каждый play определяет целевые хосты (
hosts), привилегии (become) и список tasks или roles для выполнения. - Динамизм: Поддерживается вставка переменных и использование выражений шаблонизатора Jinja2 прямо в YAML для создания динамических конфигураций.
- Идемпотентность: Задачи в playbook должны быть написаны так, чтобы их многократное выполнение приводило к одинаковому, предсказуемому состоянию системы.