概述目标:通过模块化与环境分层(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在多环境下仍保持清晰与可控,通过远程状态与审计命令保障一致性与可追溯性。

发表评论 取消回复