Terraform依赖分析器Skill terraform-dependency-analyzer

这个技能用于分析Terraform配置中的资源依赖关系,可视化依赖图,识别循环依赖,并优化资源排序,帮助优化基础设施部署。关键词:Terraform, 依赖分析, 循环依赖, 资源优化, DevOps, 基础设施即代码。

DevOps 0 次安装 0 次浏览 更新于 3/9/2026

名称: Terraform依赖分析器 描述: 分析和可视化Terraform配置中的资源依赖关系,识别循环依赖,并建议最优资源排序。当用户需要理解资源关系、排除依赖问题、优化应用顺序或重构复杂配置时,应使用此技能。

Terraform依赖分析器

此技能帮助分析和优化Terraform配置中的资源依赖关系。

何时使用

在以下情况使用此技能:

  • 理解资源关系和依赖
  • 排除循环依赖错误
  • 优化资源创建顺序
  • 重构复杂配置
  • 记录基础设施依赖

依赖类型

隐式依赖

Terraform通过资源属性引用自动检测依赖:

  • 最常见和首选的方法
  • 当一个资源引用另一个资源的属性时创建
  • 示例:subnet_id = aws_subnet.main.id

显式依赖

仅当隐式依赖不足时使用depends_on

  • 跨资源的时间要求
  • 未通过属性表达的依赖
  • 确保正确的创建/删除顺序
  • 应谨慎使用

分析工作流

1. 生成依赖图

# 创建可视化依赖图
terraform graph | dot -Tpng > graph.png

# 以文本形式查看
terraform graph

2. 识别资源关系

解析配置以映射依赖:

  • 通读资源定义
  • 注意资源间的属性引用
  • 识别显式depends_on声明
  • 映射出依赖链

3. 检查循环依赖

常见原因:

  • 具有相互入口规则的安全组
  • 资源相互引用属性
  • 模块输出创建循环引用

解决方法:

  • 使用单独的规则资源打破循环
  • 重构资源关系
  • 使用数据源打破循环引用

常见依赖模式

VPC基础设施

  1. VPC → 互联网网关,子网
  2. 子网 → NAT网关,路由表
  3. 路由表 → 路由表关联
  4. 安全组 → EC2/RDS实例

IAM资源

  1. IAM角色 → IAM策略附件
  2. IAM角色 → 使用该角色的资源

数据库设置

  1. VPC, 子网 → DB子网组
  2. 安全组 → RDS实例
  3. RDS实例 → 应用程序资源

故障排除

循环依赖错误

过程:

  1. 从错误消息中识别循环中的资源
  2. 确定哪个引用创建了循环
  3. 通过以下方式打破循环:
    • 使用单独的规则资源(对于安全组)
    • 重构资源关系
    • 使用数据源代替直接引用

应用时间慢

分析:

  • 检查不必要的depends_on语句强制顺序创建
  • 识别可以并行创建的资源
  • 寻找阻塞多个依赖的瓶颈资源

优化:

  • 当存在隐式依赖时移除显式依赖
  • 将独立资源分组在一起
  • 使用模块组织相关资源

优化指南

最小化显式依赖

  • 优先通过属性引用使用隐式依赖
  • 仅在绝对必要时使用depends_on
  • 移除冗余的显式依赖

最大化并行化

  • 确保独立资源没有不必要的依赖
  • 将相关资源分组在模块中
  • 避免创建人为的依赖链

有效使用模块

  • 按逻辑分组组织资源
  • 使用模块输出表达依赖
  • 保持模块依赖清晰且最小化

分析检查表

  • [ ] 生成依赖图
  • [ ] 识别所有资源关系
  • [ ] 检查循环依赖
  • [ ] 验证隐式依赖是否足够
  • [ ] 移除不必要的depends_on语句
  • [ ] 识别并行化机会
  • [ ] 记录关键依赖链