На каком языке пишутся Ansible playbook?

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

Ответ

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 должны быть написаны так, чтобы их многократное выполнение приводило к одинаковому, предсказуемому состоянию системы.