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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部