ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

terraform-module-library - SKILL

terraform-module-library - SKILL name: terraform-module-librarydescription: “Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.”risk: criticalsource: communitydate_added: “2026-02-27”Terraform 模块库适用于 AWS、Azure 和 GCP 基础设施的生产就绪 Terraform 模块模式。不要在此情况下使用此技能任务与 terraform 模块库无关你需要此范围之外的其他领域或工具说明澄清目标、约束和必需的输入。应用相关最佳实践并验证结果。提供可操作的步骤和验证。如果需要详细示例请打开resources/implementation-playbook.md。目的为跨多个云提供商的常见云基础设施模式创建可重用、经过良好测试的 Terraform 模块。何时使用此技能构建可重用的基础设施组件标准化云资源预置实施基础设施即代码最佳实践创建多云兼容模块建立组织的 Terraform 标准模块结构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.goAWS VPC 模块示例main.tf:resource aws_vpc main { cidr_block var.cidr_block enable_dns_hostnames var.enable_dns_hostnames enable_dns_support var.enable_dns_support tags merge( { Name var.name }, var.tags ) } resource aws_subnet private { count length(var.private_subnet_cidrs) vpc_id aws_vpc.main.id cidr_block var.private_subnet_cidrs[count.index] availability_zone var.availability_zones[count.index] tags merge( { Name ${var.name}-private-${count.index 1} Tier private }, var.tags ) } resource aws_internet_gateway main { count var.create_internet_gateway ? 1 : 0 vpc_id aws_vpc.main.id tags merge( { Name ${var.name}-igw }, var.tags ) }variables.tf:variable name { description Name of the VPC type string } variable cidr_block { description CIDR block for VPC type string validation { condition can(regex(^([0-9]{1,3}\\.){3}[0-9]{1,3}/[0-9]{1,2}$, var.cidr_block)) error_message CIDR block must be valid IPv4 CIDR notation. } } variable availability_zones { description List of availability zones type list(string) } variable private_subnet_cidrs { description CIDR blocks for private subnets type list(string) default [] } variable enable_dns_hostnames { description Enable DNS hostnames in VPC type bool default true } variable tags { description Additional tags type map(string) default {} }outputs.tf:output vpc_id { description ID of the VPC value aws_vpc.main.id } output private_subnet_ids { description IDs of private subnets value aws_subnet.private[*].id } output vpc_cidr_block { description CIDR block of VPC value aws_vpc.main.cidr_block }最佳实践对模块使用语义化版本管理为所有变量编写文档并附带描述在 examples/ 目录中提供示例使用验证块进行输入验证输出重要属性以支持模块组合在 versions.tf 中固定提供程序版本使用 locals存储计算值使用 count/for_each 实现条件资源使用 Terratest 测试模块一致地为所有资源打标签模块组合module vpc { source ../../modules/aws/vpc name production cidr_block 10.0.0.0/16 availability_zones [us-west-2a, us-west-2b, us-west-2c] private_subnet_cidrs [ 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24 ] tags { Environment production ManagedBy terraform } } module rds { source ../../modules/aws/rds identifier production-db engine postgres engine_version 15.3 instance_class db.t3.large vpc_id module.vpc.vpc_id subnet_ids module.vpc.private_subnet_ids tags { Environment production } }参考文件assets/vpc-module/- 完整的 VPC 模块示例assets/rds-module/- RDS 模块示例references/aws-modules.md- AWS 模块模式references/azure-modules.md- Azure 模块模式references/gcp-modules.md- GCP 模块模式测试// tests/vpc_test.gopackagetestimport(testinggithub.com/gruntwork-io/terratest/modules/terraformgithub.com/stretchr/testify/assert)funcTestVPCModule(t*testing.T){terraformOptions:terraform.Options{TerraformDir:../examples/complete,}deferterraform.Destroy(t,terraformOptions)terraform.InitAndApply(t,terraformOptions)vpcID:terraform.Output(t,terraformOptions,vpc_id)assert.NotEmpty(t,vpcID)}相关技能multi-cloud-architecture- 用于架构决策cost-optimization- 用于经济高效的设计局限性仅当任务明确符合上述范围时使用此技能。不要将输出视为环境特定验证、测试或专家审查的替代品。如果缺少必需的输入、权限、安全边界或成功标准请停下来询问澄清。
返回列表