用例
- 使用 Terraform 我想创建不同的 preprod env(例如:dev、qa、uat env.. 等等)。资源定义和模块使用将相同,唯一的区别是名称前缀,因此它为每个提到的 env 创建单独的资源,但保持 VPC 对所有人通用。
Terraform 版本:v0.13.5
目录结构
├── dev
│ ├── dev.tfvars
│ ├── main.tf
│ ├── outputs.tf
│ ├── provider.tf
│ └── variables.tf
├── qa
│ ├── qa.tfvars
│ ├── main.tf
│ ├── outputs.tf
│ ├── provider.tf
│ └── variables.tf
└── preprod-common
├── main.tf
├── outputs.tf
├── provider.tf
└── variables.tf
preprod-common
主文件
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = var.vpc_name
cidr = var.vpc_cidr
azs = var.vpc_azs
private_subnets = var.vpc_private_subnets
public_subnets = var.vpc_public_subnets
}
输出.tf
output "vpc_id" {
description = "The ID of the VPC"
value = module.vpc.vpc_id
}
开发者
主文件
module "security-group" {
source = "terraform-aws-modules/security-group/aws"
name = ${var.prefix}-${var.sg-name}
vpc_id = <vpc_id created from preprod-common>
}
前缀- 是环境名称。这样,它会根据前缀值为每个环境创建单独的资源,例如:(dev、qa 或 uat..so on)。
质量保证
主文件
module "security-group" {
source = "terraform-aws-modules/security-group/aws"
name = ${var.prefix}-${var.sg-name}
vpc_id = <vpc_id created from preprod-common>
}
等等..对于其他环境。
仅供参考 - 我已经运行了 preprod-common 配置,并且它创建了一个新的 AWS VPC。问题是,如何将 preprod-common 创建的 vpc_id 引用到 dev、qa 和其他较低环境中?
注意: - 我也知道工作区,但这就是我想要实现的方式。