Terragrunt 多环境 OpenTofu 堆栈编排
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/orchestrate-multi-environment-opentofu-and-terraform-stacks-with-shared-config-and-dependency-ordering-using-terragrunt
技能介绍
要解决的具体问题
多环境(如 dev、staging、prod)下用 Terraform 或 OpenTofu 管理基础设施时,常面临三类痛点:
- 配置重复:每个环境的
variables.tf、terraform.tfvars存在大量相似甚至重复定义,修改时需逐环境调整,易遗漏 - 依赖混乱:跨服务/模块的依赖关系(如先创建 VPC 再部署应用)依赖人工维护执行顺序,
plan或apply顺序错误易导致部署失败 - 状态分散:各环境的状态文件独立存储,缺乏统一视图查看环境间资源关联,故障排查时需跨环境拼接信息
核心能力与关键步骤
该技能通过 Terragrunt 实现分层堆栈协调,核心步骤如下:
- 共享配置注入:在父目录维护公共配置(如 provider 版本、标签规范),通过
include "root.hcl"让子环境继承,避免重复定义 - 依赖顺序声明:利用
dependency "vpc"块显式声明模块依赖,Terragrunt 自动计算执行拓扑,确保plan/apply按依赖顺序执行(如terragrunt apply -p vpc/ -p app/会自动先处理 VPC) - 跨环境执行编排:通过
run-all命令批量操作所有环境,例如terragrunt run-all plan可同时生成全环境 plan 报告,直观对比差异 - 状态统一管理:支持在父配置中定义远程状态后端(如 S3、GCS),子环境自动继承状态存储配置,避免状态分散问题
适用边界与注意点
- 需提前安装
Terragrunt CLI和Terraform/OpenTofu,且目标代码库需按「根目录-环境目录-模块目录」的分层结构组织 - 依赖声明需准确对应模块路径,若模块路径变更未同步更新
dependency块,会导致依赖计算失效 - 涉及敏感环境的远程状态后端需提前配置访问凭证,避免因权限不足导致状态操作失败
- 不适用于无明确分层需求的单环境场景,会增加配置复杂度
使用场景
- 多环境(dev/staging/prod)下管理Terraform配置时,需要统一更新provider版本并批量应用到所有环境
- 跨服务模块依赖(如VPC和应用部署)时,需要确保terraform apply按正确顺序执行避免失败
- 各环境状态文件分散存储时,需要统一配置S3后端并查看跨环境资源关联关系
- 批量对比多环境变更差异时,需要用run-all plan生成全环境plan报告并直观对比
适合人员
- 管理多环境Terraform/OpenTofu代码的DevOps工程师,需要统一配置并批量部署减少重复工作
- 负责基础设施部署的运维工程师,需要确保跨模块依赖顺序正确避免部署失败
- 管理基础设施代码库的技术负责人,需要规范多环境状态管理减少配置不一致
- 排查多环境资源关联问题的SRE工程师,需要统一视图查看跨环境资源状态关系