Как выполнить Ansible playbook?

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

Ответ

Основная команда для выполнения — ansible-playbook. Вот как я обычно ее использую с различными параметрами.

Базовый запуск:

ansible-playbook site.yml

Эта команда выполнит playbook site.yml, используя inventory по умолчанию (обычно /etc/ansible/hosts).

Практические примеры с параметрами:

  1. С указанием кастомного inventory файла:
    ansible-playbook -i inventory/prod.yml deploy_web.yml
  2. Запуск для конкретной группы хостов или одного хоста:
    ansible-playbook -i hosts.ini --limit webservers apache_install.yml
    ansible-playbook -i hosts.ini --limit db01.example.com mysql_config.yml
  3. Запуск с повышенными привилегиями (sudo):
    ansible-playbook -i hosts.ini --become -K system_update.yml

    -K запросит пароль для sudo.

  4. Проверка (Dry Run) и отладка:
    # Проверка без внесения изменений
    ansible-playbook --check --diff configure_firewall.yml
    # Подробный вывод для отладки
    ansible-playbook -vvv deploy.yml
  5. Передача дополнительных переменных:
    ansible-playbook -i staging.yml deploy.yml --extra-vars "version=2.1.4 env=staging"
    ansible-playbook -i prod.yml deploy.yml --extra-vars "@vars/prod_secrets.json"

Типичный рабочий процесс:

  1. Пишу и тестирую playbook на локальной Vagrant-машине или в staging-инвентаре.
  2. Запускаю с --check --diff, чтобы увидеть планируемые изменения.
  3. Выполняю реальный прогон.
  4. Для production-задач часто запускаю через AWX/Tower, что дает веб-интерфейс, логирование и контроль доступа.