Terraform Stacks
Тема дорожной карты · Terraform
Terraform Stacks — способ описывать и раскатывать несколько связанных Terraform-конфигураций как единое целое, вышедший в GA в конце 2025 года (Terraform 1.13+; отдельный terraform-stacks-cli влит в основной CLI). Stacks решают проблему «много почти одинаковых окружений»: вместо копирования корневых модулей по папкам environments/dev, environments/prod вы описываете компоненты один раз, а различия окружений выносите в деплойменты. Модель состоит из двух видов файлов: *.tfcomponent.hcl (что разворачиваем — блоки component, provider, variable, output) и *.tfdeploy.hcl (куда и с какими входами — блоки deployment, orchestrate). Важно: полноценная оркестрация Stacks — это фича HCP Terraform (облако/Enterprise); в OpenTofu Stacks нет.
Как это работает
Компоненты ссылаются на обычные модули и связываются между собой:
component "vpc" {
source = "terraform-aws-modules/vpc/aws"
inputs = { cidr = var.cidr }
}
component "app" {
source = "./modules/app"
inputs = { vpc_id = component.vpc.vpc_id }
}
# deployments.tfdeploy.hcl
deployment "prod" { inputs = { cidr = "10.0.0.0/16" } }
deployment "staging" { inputs = { cidr = "10.1.0.0/16" } }
Конфигурация компонентов одинакова для всех деплойментов, а различия задаются входными переменными деплоймента. Связи между компонентами (выход одного как вход другого, например component.vpc.vpc_id) Stacks разрешают автоматически и строят из них граф зависимостей раскатки. У каждого деплоймента своё изолированное состояние, поэтому dev и prod не мешают друг другу. Блок orchestrate описывает правила авто-аппрувов между группами — например, применять prod только после успешного staging. Провайдеры в Stacks объявляются иначе, чем в обычном Terraform (отдельный workflow передачи конфигураций провайдера в компоненты).
Когда применять
- Один и тот же стек в нескольких регионах / аккаунтах / окружениях, где нужен единый жизненный цикл и раскатка «волной».
- Замена самодельной обвязки из Terragrunt/скриптов для fan-out по окружениям — если вы уже в экосистеме HCP Terraform.
Для одного окружения или без HCP Terraform Stacks избыточны — хватит модулей и workspaces.
Типичные ошибки
- Ждать Stacks в OpenTofu или в open-source CLI без HCP — оркестрации там нет.
- Тащить в Stacks проект с одним окружением — это усложнение без выгоды.
- Путать
componentс обычнымmodule: компонент — единица деплоя и графа Stacks, а не просто вызов модуля.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…