← Назад к вопросам

Как запустить playbook

1.3 Junior🔥 211 комментариев
#Ansible и управление конфигурацией

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Запуск Playbook Ansible

Для запуска playbook Ansible необходимо выполнить команду ansible-playbook в терминале с указанием пути к файлу playbook и необходимых параметров. Это основной инструмент для выполнения автоматизации инфраструктуры, который я использую ежедневно в своей работе DevOps Engineer. Вот детальное руководство по процессу.

Основная команда запуска

Базовый синтаксис команды выглядит следующим образом:

ansible-playbook /путь/до/playbook.yml

Например, для запуска playbook deploy-web.yml в текущей директории:

ansible-playbook deploy-web.yml

Ключевые параметры и флаги

Опытный DevOps Engineer никогда запускает playbook "в чистом виде" — всегда используются параметры для контроля выполнения. Вот наиболее важные:

  • -i или --inventory: указание inventory файла (списка целевых хостов).
    ansible-playbook -i inventory/production deploy-web.yml
    
  • --limit: ограничение выполнения на конкретные хосты или группы из inventory.
    ansible-playbook deploy-web.yml --limit web_servers
    
  • --check: режим "dry run" — playbook выполняется без реальных изменений, что позволяет проверить, что будет происходить. Это критически важный флаг для безопасного запуска в production!
    ansible-playbook deploy-web.yml --check
    
  • --diff: показывает различия в файлах, которые будут изменены (особенно полезно при использовании модуля template или copy).
    ansible-playbook deploy-web.yml --diff
    
  • -v, -vv, -vvv: увеличение уровня детализации output (verbosity). -vvv показывает максимальную детализацию, включая raw ответы от хостов.
  • --tags и --skip-tags: запуск или пропуск задач с определенными тегами. Это мощный механизм для модульного выполнения.
    ansible-playbook deploy-web.yml --tags "nginx,config"
    
  • --extra-vars или -e: передача дополнительных переменных в формате JSON или YAML, часто для параметризации запуска.
    ansible-playbook deploy-web.yml -e "version=2.3.4 deploy_env=prod"
    

Практический пример запуска с полным набором параметров

В production-среде я обычно комбинирую несколько флагов для безопасного и контролируемого выполнения. Вот типичная команда для деплоя обновления на группу frontend:

ansible-playbook -i inventories/production.yml \
                 site.yml \
                 --limit "frontend" \
                 --tags "deploy,frontend_config" \
                 --check --diff \
                 -e "app_version=1.5.2" \
                 -vv

Эта команда:

  1. Использует inventory для production среды.
  2. Ограничивает выполнение на хосты в группе frontend.
  3. Запускает только задачи с тегами deploy и frontend_config.
  4. Сначала выполняется в режиме проверки (--check) с выводом различий (--diff).
  5. Передает переменную app_version со значением 1.5.2.
  6. Выводит подробный отчет уровня -vv.

Рекомендуемый workflow перед запуском в production

Как эксперт, я всегда соблюдаю строгую последовательность действий:

  1. Локальная проверка синтаксиса:
    ansible-playbook playbook.yml --syntax-check
    
  2. Запуск в тестовой среде (например, staging):
    ansible-playbook -i inventories/staging.yml playbook.yml --diff -vv
    
  3. Dry run на production inventory:
    ansible-playbook -i inventories/production.yml playbook.yml --check --diff -vv
    
  4. Анализ output из dry run, особенно изменений файлов (--diff) и списка задач, которые будут выполнены.
  5. Финальный запуск на production с необходимыми --limit и --tags, возможно, с пошаговым подтверждением (--step).

Использование ansible-playbook в CI/CD пайпайнах

В современных DevOps-практиках запуск playbook часто интегрируется в инструменты CI/CD. Пример секции в Jenkins pipeline или GitHub Actions:

# Пример для GitHub Actions
- name: Run Ansible playbook
  run: |
    ansible-playbook -i ${{ secrets.ANSIBLE_INVENTORY_PATH }} \
                     deploy.yml \
                     --extra-vars "commit_hash=${{ github.sha }}"

Также для повышения безопасности и управления секретами используются Ansible Vault для шифрования sensitive данных и передача vault пароля через --ask-vault-pass или файл.

ansible-playbook deploy.yml --ask-vault-pass

Заключение

Запуск playbook — это не просто одна команда, это процесс, требующий понимания inventory, тегов, переменных и режимов проверки. Правильное использование параметров --check, --diff и --limit предотвращает ошибки в production. В моей практике я всегда начинаю с dry run, анализирую diff, затем выполняю ограниченный запуск на целевые группы, используя теги для контроля granularity выполнения задач. Это обеспечивает надежную и предсказуемую автоматизацию инфраструктуры.

Как запустить playbook | PrepBro