用途:Terraform Stacks 在传统 Terraform 模块之上提供配置层,用于大规模声明式编排跨环境、区域和云账号的多个组件。
主要能力:Stack 由组件(对模块的抽象,含 source、inputs、providers)和部署(带具体输入值的实例)组成,使用独立的 HCL 语言。文件扩展名为 .tfcomponent.hcl(组件配置)和 .tfdeploy.hcl(部署配置),须放在仓库根目录,由 HCP Terraform 按依赖顺序处理。支持变量(凭据用 ephemeral=true)、required_providers、provider(支持 for_each,别名写在块头,配置放在 config 块)、component、output、locals、removed 块;部署侧支持 identity_token(OIDC)、store(引用变量集)、deployment(每个 Stack 最少 1 个、最多 20 个)、deployment_group、deployment_auto_approve,以及 publish_output 与 upstream_input 实现 Stack 间链接。组件依赖由输出引用自动推断,支持 for_each 多区域部署和延迟变更。
使用方式:需 Terraform v1.13.x 或更高版本,并在根目录添加 .terraform-version 文件。常用命令:terraform stacks init、terraform stacks providers-lock、terraform stacks validate、terraform stacks configuration upload(上传即触发部署运行,无 plan/apply 命令)、terraform stacks deployment-run list、terraform stacks deployment-group watch、terraform stacks deployment-run approve-all-plans、terraform stacks configuration list/fetch/watch、terraform stacks create/fmt/list/version。自动化场景建议改用 HCP Terraform API 监控,而非会持续流式输出的 watch 命令。
适用场景:多环境(dev/staging/prod)、多区域、多云账号的统一编排,以及需要跨 Stack 传递输出的场景。
限制:Stacks 自 Terraform CLI v1.13+ 起 GA,并计入 HCP Terraform 的 RUM 计费;deployment_group 与 deployment_auto_approve 为 HCP Terraform Premium 层功能;用于 Stacks 的模块不能包含 provider 块;部分公共注册表模块(如某些 ALB、ECS 模块)存在兼容性问题,生产使用前需测试;销毁部署需在 deployment 块设 destroy=true 后上传配置,无法从 UI 直接销毁;orchestrate 块已弃用。具体价格与更多细节暂未提供。