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