hostprofi.ru
Подобрать хостинг
Термин·буква A

Ansible Playbook

краткое определение

Ansible Playbook — YAML-файл, описывающий набор задач автоматизации для управления серверами через Ansible. Декларативно задаёт желаемое состояние системы: установку пакетов, конфигурацию сервисов, деплой приложений. Выполняется без агентов через SSH.

Ansible Playbook — основная единица автоматизации в Ansible. Это YAML-файл, описывающий «пьесы» (plays) — последовательности задач, применяемых к определённым группам серверов из инвентаря. Playbook задаёт желаемое состояние инфраструктуры декларативно: не «выполни эту команду», а «убедись, что nginx установлен и запущен».

Структура Playbook

---
- name: Настройка веб-сервера
  hosts: webservers
  become: yes  # выполнять от root (sudo)
  vars:
    nginx_port: 80
    php_version: "8.2"

  tasks:
    - name: Обновить apt кэш
      apt:
        update_cache: yes

    - name: Установить nginx
      apt:
        name: nginx
        state: present

    - name: Установить PHP-FPM
      apt:
        name: "php{{ php_version }}-fpm"
        state: present

    - name: Запустить и включить nginx
      service:
        name: nginx
        state: started
        enabled: yes

    - name: Скопировать конфиг nginx
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/sites-available/default
      notify: Перезапустить nginx

  handlers:
    - name: Перезапустить nginx
      service:
        name: nginx
        state: restarted

Ключевые элементы Playbook:

  • hosts — на какие серверы из инвентаря применять.
  • tasks — список модулей с параметрами. Ansible имеет 3 000+ встроенных модулей.
  • vars — переменные для шаблонизации конфигов (Jinja2).
  • handlers — задачи, вызываемые только при изменении (notify). Например, перезапуск nginx только если конфиг изменился.
  • roles — повторно используемые структуры Playbook для типовых компонентов (nginx, postgresql, docker).

Идемпотентность

Playbook идемпотентен: повторный запуск не меняет уже настроенную систему. Модуль apt: state: present проверяет, установлен ли пакет, прежде чем устанавливать. Это позволяет запускать Playbook регулярно для проверки соответствия конфигурации.

История

Ansible создан Майклом ДеХааном в 2012 году как агентless-альтернатива Puppet и Chef. Red Hat приобрела Ansible в 2015 году за ~$150 млн. В 2019 году Ansible перешёл под управление Ansible Community и IBM/Red Hat. Ansible Automation Platform (коммерческий продукт) добавляет веб-интерфейс (AWX/Tower) поверх открытого Ansible. Galaxy.ansible.com — репозиторий готовых ролей: более 10 000 ролей для типовых задач.

На что обращать внимание

Ansible работает через SSH без агентов — это упрощает начало работы, но снижает скорость при больших инфраструктурах (1 000+ серверов). Для параллельного выполнения используйте forks: 50 в ansible.cfg. Храните Playbook в Git (git репозитории) — это Infrastructure as Code. Секреты (пароли, ключи API) шифруйте через Ansible Vault командой ansible-vault encrypt vars/secrets.yml. Не пишите задачи через shell: там, где есть идемпотентный модуль — это ломает идемпотентность.

Ansible Playbook на практике

Ansible Playbook — YAML-файл, описывающий состояние сервера. Ansible выполняет tasks последовательно: установка пакетов, копирование файлов, перезапуск сервисов. Idempotency: повторный запуск не изменяет уже применённые настройки. Роли организуют повторно используемые компоненты: role nginx, role php, role mysql. Git-интеграция: playbooks хранятся в репозитории, версионируются. SSH: Ansible подключается к серверам по SSH-ключам без установки агентов. Альтернативы: Puppet (агент-based), Chef (Ruby DSL). Vault: Ansible Vault шифрует чувствительные переменные (пароли, токены) прямо в playbook.

Другие термины

Ansible Playbook — что это, определение и как работает | Справочник — hostprofi.ru