用途
Terraform Module Library 是一个面向 AWS、Azure 和 GCP 基础设施的生产级 Terraform 模块模式技能。其目标是创建可复用、经过良好测试的 Terraform 模块,覆盖多个云提供商的常见云基础设施模式。
适用场景包括:构建可复用的基础设施组件、标准化云资源供给、实施基础设施即代码最佳实践、创建多云兼容模块、建立组织级 Terraform 标准。
不适用场景:任务与 Terraform 模块库无关,或需要本范围之外的其它领域或工具。
主要能力
该技能提供模块目录组织方式、标准模块文件结构、AWS VPC 模块示例、最佳实践清单、模块组合示例以及 Terratest 测试示例。
模块目录结构示例:
terraform-modules/
├── aws/
│ ├── vpc/
│ ├── eks/
│ ├── rds/
│ └── s3/
├── azure/
│ ├── vnet/
│ ├── aks/
│ └── storage/
└── gcp/
├── vpc/
├── gke/
└── cloud-sql/
标准模块模式:
module-name/
├── main.tf # Main resources
├── variables.tf # Input variables
├── outputs.tf # Output values
├── versions.tf # Provider versions
├── README.md # Documentation
├── examples/ # Usage examples
│ └── complete/
│ ├── main.tf
│ └── variables.tf
└── tests/ # Terratest files
└── module_test.go
使用方式
技能说明要求:明确目标、约束和所需输入;应用相关最佳实践并验证结果;提供可操作的步骤和验证方法。
AWS VPC 模块示例包含 main.tf、variables.tf 和 outputs.tf 的完整代码。main.tf 定义 aws_vpc、aws_subnet(私有子网)、aws_internet_gateway 资源;variables.tf 定义 name、cidr_block(含正则校验)、availability_zones、private_subnet_cidrs、enable_dns_hostnames、tags 等变量;outputs.tf 输出 vpc_id、private_subnet_ids、vpc_cidr_block。
模块组合示例展示如何通过 module 块引用 VPC 模块和 RDS 模块,并将 VPC 的输出(vpc_id、private_subnet_ids)传递给 RDS 模块。
测试示例使用 Terratest 编写 Go 测试,通过 terraform.InitAndApply 和 terraform.Output 验证 VPC 模块输出。
最佳实践
- 对模块使用语义化版本控制
- 为所有变量编写描述文档
- 在 examples/ 目录中提供示例
- 使用 validation 块进行输入验证
- 输出重要属性以支持模块组合
- 在 versions.tf 中固定提供程序版本
- 使用 locals 处理计算值
- 使用 count/for_each 实现条件资源
- 使用 Terratest 测试模块
- 为所有资源一致地打标签
适用场景
适合需要跨 AWS、Azure、GCP 构建标准化、可复用 Terraform 模块的团队,用于统一云资源供给方式、建立组织级 IaC 规范、实现多云兼容的基础设施组件。
限制
支撑材料可用性说明:本目录副本包含上述内联指导,但不包含以下支撑路径,它们是外部前置条件而非捆绑文件:
- <support-root>/assets/vpc-module/
- <support-root>/assets/rds-module/
- <support-root>/references/azure-modules.md
- <support-root>/references/gcp-modules.md
在使用依赖这些路径的步骤前,需先获取原始支撑材料或已有安装;本目录未标识这些材料的已验证下载来源。应相对于该安装解析每个路径,检查其内容,并验证适用的许可证和执行前置条件。在所需文件存在之前,不要运行命令或声称已遵循引用的过程。不要伪造缺失的脚本,也不要把同名的无关文件视为等价。此处完整记录的独立步骤可在用户授权范围内进行;任何依赖步骤应报告为不可用。
此外,仅在任务明确匹配上述范围时使用本技能;不要将输出视为环境特定验证、测试或专家审查的替代;如果缺少所需输入、权限、安全边界或成功标准,应停止并请求澄清。
相关技能:multi-cloud-architecture(用于架构决策)、cost-optimization(用于成本效益设计)。