Ответ
Плюсы:
- Агент-фри архитектура: Управление через SSH/WinRM, не требует установки и поддержки агентов на целевых хостах, что упрощает начальное внедрение.
- Простота и читаемость: Декларативные плейбуки на YAML имеют низкий порог входа, их легко читать и понимать всей команде.
- Идемпотентность: Повторный запуск плейбука приводит систему в желаемое состояние, а не вызывает ошибки, что безопасно для автоматизации.
- Огромная экосистема: Коллекции и роли из Ansible Galaxy покрывают настройку практически любого ПО, что ускоряет разработку.
- Универсальность: Один инструмент для provisioning, конфигурации, развертывания приложений и оркестрации.
Минусы:
- Производительность на больших инфраструктурах: Последовательное выполнение задач по SSH может быть медленным для тысяч нод, хотя есть стратегии ускорения (ускоренный режим, free strategy).
- Сложность отладки: При ошибке в большом плейбуке бывает сложно локализовать проблему, особенно при использовании динамического инвентаря и сложных шаблонов Jinja2.
- Ограниченная поддержка сложной оркестрации: Для сценариев, требующих сложного состояния и зависимостей между нодами, инструменты вроде Terraform или специализированные оркестраторы могут быть удобнее.
- Работа с состоянием: Ansible не хранит состояние инфраструктуры явно, в отличие от Terraform, что может усложнить отслеживание дрейфа конфигурации.