IaC ломается не в коде, а в границах ответственности между Terraform и Ansible
Terraform должен создавать и связывать инфраструктуру: сети, VM, IAM, балансировщики, DNS. Ansible — доводить хост до нужного состояния: пакеты, конфиги, сервисы, пользователи. Когда один инструмент начинает делать работу другого, получается классика продакшена: ресурсы вроде бы есть, но никто не понимает, кто их должен чинить.
Держите разделение жестким:
— Terraform управляет жизненным циклом ресурса, Ansible не должен создавать облачные объекты.
— Ansible не хранит «истину» о инфраструктуре, он применяет состояние к уже поднятым узлам.
— Между ними нужен явный контракт: outputs, inventory, variables, а не магия в shell-скриптах.
— Идемпотентность проверяется отдельно: сначала план, потом применение, потом повторный прогон без сюрпризов.
Типовая ошибка — прятать конфигурацию в десятке файлов без структуры. Работает до первого инцидента, затем начинается археология: где задан SSH key, почему переменная пустая, кто создал этот security group. Нормальная схема проще: отдельные модули для Terraform, отдельные роли для Ansible, одинаковые правила именования и минимум неявных зависимостей.
Автоматизация — это не опция, а необходимость. Если пайплайн нельзя прогнать заново и получить тот же результат, это не IaC, а декоративный скрипт.
Трекер: конфиги
@tracker_configs_arb
IaC ломается не в коде, а в границах ответственности между Terraform и Ansible
Этот пост опубликован в Telegram-канале Трекер: конфиги. Подписаться можно по ссылке: @tracker_configs_arb.