概述目标:通过模块化与环境分层(dev/stage/prod),实现配置复用、远程状态与参数治理。适用:多云/多区域基础设施、环境一致性与审计。核心与实战项目结构建议:infra/ modules/ network/ main.tf variables.tf outputs.tf compute/ main.tf variables.tf outputs.tf envs/ dev/ main.tf dev.tfvars prod/ main.tf prod.tfvars 模块示例(network/main.tf):variable "cidr" { type = string } resource "aws_vpc" "main" { cidr_block = var.cidr tags = { Name = "main" } } output "vpc_id" { value = aws_vpc.main.id } 环境main.tf(envs/dev/main.tf):terraform { backend "s3" { bucket = "tf-state-bucket" key = "dev/terraform.tfstate" region = "us-east-1" encrypt = true } } provider "aws" { region = "us-east-1" } module "network" { source = "../../modules/network" cidr = var.vpc_cidr } variable "vpc_cidr" { type = string } 示例初始化与工作区:cd infra/envs/dev terraform init terraform workspace new dev || terraform workspace select dev terraform plan -var-file=dev.tfvars terraform apply -auto-approve -var-file=dev.tfvars 变量文件(dev.tfvars):vpc_cidr = "10.0.0.0/16" 验证与监控远程状态:terraform state list aws s3 ls s3://tf-state-bucket/dev/ 输出与依赖:terraform output 审计与漂移:terraform plan -detailed-exitcode 常见误区在不同环境复用本地状态导致覆盖;需使用远程状态并按环境分隔key。模块传参不一致导致资源命名冲突;应统一命名约定与标签。未管理provider版本导致升级破坏;使用`required_providers`锁定版本。结语模块化与分层治理让Terraform在多环境下仍保持清晰与可控,通过远程状态与审计命令保障一致性与可追溯性。

发表评论 取消回复