Terraform模块化实战:管理50+云资源不再头疼
Raj Kumar | 2026-08-13T07:14:00 | DevOps, Cloud
用Terraform Module管理大规模云基础设施的实践经验,包括模块设计、workspace和state管理
# Terraform模块化实战:管理50+云资源不再头疼 团队管理3个环境50多个云资源,一开始所有配置写在一个main.tf里,2000多行,改一行提心吊胆。重构成模块化之后,终于能睡好觉了。 ## 目录结构 ``` terraform/ modules/ vpc/ main.tf variables.tf outputs.tf ecs/ main.tf variables.tf outputs.tf rds/ main.tf variables.tf outputs.tf environments/ dev/ main.tf # 引用modules terraform.tfvars # 环境特定变量 staging/ main.tf terraform.tfvars prod/ main.tf terraform.tfvars ``` ## 模块调用 ```hcl # environments/prod/main.tf module "vpc" { source = "../../modules/vpc" cidr_block = var.vpc_cidr environment = "prod" # prod用3个可用区 az_count = 3 } module "rds" { source = "../../modules/rds" vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnet_ids instance_class = "db.r6g.xlarge" # prod用大实例 multi_az = true # prod开多可用区 } ``` ## State锁 ```hcl # 用S3+DynamoDB管理state,防止并发修改 terraform { backend "s3" { bucket = "my-terraform-state" key = "prod/terraform.tfstate" region = "ap-southeast-1" dynamodb_table = "terraform-locks" encrypt = true } } ``` 模块化之后,新建一个环境只要改tfvars文件就行了,再也不用复制粘贴了。