Когда Terraform-проект растёт, быстро появляется хаос: одинаковые provider, backend, переменные, зависимости между модулями и десятки почти одинаковых папок для dev, stage, prod. Здесь и приходит Terragrunt — тонкая обёртка над Terraform, которая помогает соблюдать принцип DRY (Don’t Repeat Yourself) и упрощает сопровождение инфраструктуры.
Что делает Terragrunt
- выносит общие настройки в один файл
- уменьшает дублирование кода между окружениями
- упрощает работу с remote state
- позволяет описывать зависимости между модулями
- помогает запускать Terraform-модули пакетно
Зачем он нужен на практике
Без Terragrunt типичная проблема выглядит так: в каждом окружении копируются одинаковые блоки backend, providers, общие variables и source для модулей. Любое изменение приходится вносить вручную в несколько мест. Это повышает риск ошибок и рассинхронизации среды. 😵
Terragrunt решает это через terragrunt.hcl, где можно:
- подключать общий конфиг через
include - передавать inputs в Terraform-модули
- централизованно настраивать state
- использовать
dependencyдля получения outputs из других модулей
Пример пользы
Допустим, у вас есть VPC, база данных и Kubernetes-кластер в трёх окружениях. Вместо копирования одних и тех же Terraform-конфигов создаётся структура:
live/devlive/stagelive/prod
В корне хранится общий terragrunt.hcl, а в каждом окружении — только специфичные параметры: регион, размер инстансов, имена ресурсов. Всё остальное наследуется. Это делает инфраструктурный код чище и понятнее. 🧩
Ключевые преимущества
- Меньше дублирования — проще поддержка
- Единый подход для окружений — меньше ручной работы
- Управление зависимостями — удобно при сложной инфраструктуре
- Централизация backend/state — важный плюс для командной работы
- Масштабируемость — особенно полезно в multi-account и multi-env проектах 🚀
Когда Terragrunt особенно полезен
- много Terraform-модулей
- несколько окружений или аккаунтов
- команда работает с общей инфраструктурой
- нужно стандартизировать IaC-подход
- проект уже страдает от копипаста
Есть ли минусы?
Да. Terragrunt добавляет ещё один слой абстракции, который нужно понимать. Для маленького проекта с 1–2 модулями он может быть избыточен. Но для средних и крупных инфраструктур выгода обычно перекрывает порог входа.
Итог
Terragrunt — это не замена Terraform, а способ сделать его использование более структурированным, повторно используемым и удобным. Если в вашем IaC много одинаковых конфигураций, Terragrunt помогает навести порядок, сократить ошибки и ускорить развитие инфраструктуры. ✅
Подборку каналов про IT стоит посмотреть тем, кто следит за DevOps, Terraform, облаками и практикой современной инфраструктуры.