Давайте дружить в Телеграме: рассказываем про новые фичи и общаемся в комментах Подписаться
support@serv.host
Личный кабинет

Ansible. Playbooks - автоматизация по сценарию

Если Ad-hoc команды (из предыдущей статьи) - это быстрые разовые действия, то Playbooks (Плейбуки) - это полноценные сценарии автоматизации. Это файлы, в которых вы описываете, в каком состоянии должен находиться ваш сервер, а Ansible берет на себя всю работу по приведению его к этому состоянию.

Что такое YAML?

Плейбуки пишутся на языке YAML. Он максимально приближен к обычному английскому тексту и легко читается.

Важное правило YAML: В нем нет скобок, но крайне важны отступы (пробелы). Все элементы одного уровня должны иметь одинаковый отступ. Никогда не используйте клавишу Tab, только пробелы!


Структура простого Playbook

Давайте создадим файл setup_web.yml, который превратит ваш чистый VPS в готовый веб-сервер.

---
- name: Установка и настройка веб-сервера Nginx
  hosts: web_servers
  become: yes
  tasks:
    - name: Установка последней версии Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

    - name: Запуск службы Nginx и добавление в автозагрузку
      service:
        name: nginx
        state: started
        enabled: yes

    - name: Создание индексной страницы
      copy:
        content: "<h1>Сервер настроен через Ansible на Serv.host!</h1>"
        dest: /var/www/html/index.html

Разбор ключевых полей: name: Описание того, что делает сценарий или конкретный шаг (таск). Помогает понимать логику при запуске. hosts: Группа серверов из вашего hosts.ini, на которых будет запущен сценарий. become: yes: Указывает, что команды нужно выполнять с правами sudo (root). tasks: Список конкретных шагов (задач). apt, service, copy: Это модули, которые выполняют работу.


Главное преимущество - идемпотентность

Это страшное слово означает очень простую и полезную вещь: вы можете запускать один и тот же Playbook сколько угодно раз, и результат будет одинаковым.

Если Nginx уже установлен, Ansible просто пропустит этот шаг. Если файл index.html уже совпадает с тем, что вы указали, он не будет его перезаписывать. Это делает автоматизацию безопасной - вы не «сломаете» уже настроенный сервер повторным запуском сценария.


Как запустить Playbook?

Для запуска сценариев используется специальная команда ansible-playbook.

Введите в терминале:

ansible-playbook -i hosts.ini setup_web.yml

Что вы увидите в консоли:

  • PLAY RECAP: В конце выйдет отчет.
  • changed=1: Значит, Ansible внес изменения.
  • ok=4: Значит, система уже была в нужном состоянии, и Ansible ничего не трогал.
  • failed=0: Ошибок нет.

Советы для продвинутых

1. Проверка синтаксиса. Перед запуском всегда полезно проверить файл на ошибки:

ansible-playbook setup_web.yml --syntax-check

2. Режим "Dry Run" (Прогон без изменений). Хотите узнать, что изменится на сервере, не меняя ничего на самом деле?

ansible-playbook -i hosts.ini setup_web.yml --check

3. Комментарии. Используйте символ #, чтобы оставлять заметки в своих YAML файлах. Это поможет вам вспомнить логику через месяц.