Agent Skills
返回列表
🔒

Terragrunt 多环境 OpenTofu 堆栈编排

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 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工程师,需要统一视图查看跨环境资源状态关系