Terraform模块脚手架工具Skill terraform-module-scaffolder

这个技能用于快速创建标准化的Terraform模块结构,包括main.tf、variables.tf、outputs.tf、versions.tf和README.md文件,遵循最佳实践和约定,帮助开发者在DevOps和云计算环境中高效管理基础设施即代码。关键词:Terraform, 模块, 脚手架, 结构, 最佳实践, DevOps, 云计算, 基础设施即代码。

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

name: terraform-module-scaffolder description: 使用标准化结构脚手架新的Terraform模块,包括main.tfvariables.tfoutputs.tfversions.tf和README.md。当用户想要创建新的Terraform模块、设置模块结构或需要常见基础设施模式如VPC、ECS、S3或RDS模块的模板时,应使用此技能。

Terraform模块脚手架工具

此技能帮助创建遵循最佳实践和约定的结构良好的Terraform模块。

何时使用

在以下情况下使用此技能:

  • 从零开始创建新的Terraform模块
  • 设置标准化的模块结构
  • 需要常见AWS/Azure/GCP资源的模板
  • 希望确保模块遵循Terraform约定

模块结构

生成具有此标准结构的模块:

module-name/
├── main.tf           # 主要资源定义
├── variables.tf      # 输入变量
├── outputs.tf        # 输出值
├── versions.tf       # 提供商和Terraform版本约束
├── README.md         # 模块文档
└── examples/         # 使用示例(可选)
    └── basic/
        └── main.tf

指令

1. 收集需求

询问用户:

  • 模块名称是什么?
  • 云提供商是什么(AWS、Azure、GCP、多云)?
  • 模块应该创建什么资源?
  • 任何特定的需求或约束?

2. 创建核心文件

main.tf - 包括:

  • 带有清晰命名的资源定义
  • 计算属性的本地值
  • 如果需要,数据源

variables.tf - 包括:

  • 首先必需变量,然后可选变量
  • 每个变量的清晰描述
  • 适当处的明智默认值
  • 类型约束(字符串、数字、布尔、列表、映射、对象)
  • 关键输入的验证规则

outputs.tf - 包括:

  • 资源ID和ARN
  • 连接信息(端点、URL)
  • 其他模块可能需要计算属性
  • 每个输出的清晰描述

versions.tf - 包括:

  • Terraform版本约束(使用~>表示次要版本)
  • 提供商版本约束
  • 必需提供商块

README.md - 包括:

  • 模块描述和目的
  • 使用示例
  • 需求部分
  • 输入表(可以稍后自动生成)
  • 输出表(可以稍后自动生成)

3. 应用最佳实践

  • 使用一致的命名:resource_type-purpose(例如,s3-logsvpc-main
  • 向所有可标记资源添加标签,变量用于自定义标签
  • 使用 terraform fmt 格式化
  • 在适当处包括生命周期块
  • 仅当隐式依赖不起作用时添加 depends_on
  • 对条件资源使用 countfor_each

4. 添加示例用法

创建 examples/basic/main.tf 显示最小工作示例:

module "example" {
  source = "../.."
  
  # 必需变量
  name = "example"
  
  # 带有常见值的可选变量
  tags = {
    Environment = "dev"
    ManagedBy   = "terraform"
  }
}

验证清单

在完成前,验证:

  • [ ] 所有文件使用一致的格式化(terraform fmt
  • [ ] 变量有描述和适当的类型
  • [ ] 输出有描述
  • [ ] 版本约束已指定
  • [ ] README包括使用示例
  • [ ] 模块遵循命名约定
  • [ ] 标签通过变量可配置