support@serv.host
Service StatusCreate account
Lucky Cards

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 файлах. Это поможет вам вспомнить логику через месяц.

Read next

Articles from the same section and on the same topics.

Still have questions?

Browse the rest of the knowledge base — the neighbouring topics are covered too.