我们使用terraform来扩展AWS中的基础设施,我们有三个独立的环境: Dev、Stage和Prod
发展:需要-公共,private1a,私有化b和privatedb2子网阶段和项目:需求-公共,private_1a,private_1b,私营化b和privatedb2子网。
我有main.tf,变量,dev.tfvars,stage.tfvars和prod.tfvars。我试图了解如何使用我目前正在使用的开发环境中的main.tf文件,以及如何使用.tfvars文件创建舞台和驱动所需的资源。
terraform var-file=dev.tfvars
terraform var-file=stage.tfvars(除了其他子网之外,还应该创建子网private_1b )
terraform var-file=prod.tfvars(除了其他子网之外,还应该创建子网private_1b )
如果你需要进一步的澄清,请告诉我。
谢谢,
发布于 2018-07-03 09:38:37
你想要做的确实是正确的方法。您还必须使用terraform工作区。
Terraform从一个名为"default“的工作区开始。这个工作区是特殊的,因为它是默认的,也是因为它永远不能被删除。如果您从未显式地使用过工作区,那么您只在“默认”工作区上工作过。 工作区由命令的terraform工作区集管理。要创建一个新的工作区并切换到它,您可以使用terraform工作区new;要切换环境,可以使用terraform工作区选择;等等。
本质上,这意味着您将为您所拥有的每个环境创建一个工作区。
让我们用一些例子来看看。
我有以下文件:
main.tf
此文件包含VPC模块9可以是任何资源ofc)。我们通过var调用变量。职能:
module "vpc" {
source = "modules/vpc"
cidr_block = "${var.vpc_cidr_block}"
subnets_private = "${var.vpc_subnets_private}"
subnets_public = "${var.vpc_subnets_public}"
}variables.tf
这个文件包含我们所有的变量。请不要在这里指定默认,这将确保我们100%肯定我们正在使用来自.tfvars文件的变量。
variable "vpc_cidr_block" {}
variable "vpc_subnets_private" {
type = "list"
}
variable "vpc_subnets_public" {
type = "list"
}基本上就是这样。我们的.tfvars文件将如下所示:
dev.tfvars
vpc_cidr_block = "10.40.0.0/16"
vpc_subnets_private = ["10.40.0.0/19", "10.40.64.0/19", "10.40.128.0/19"]
vpc_subnets_public = ["10.40.32.0/20", "10.40.96.0/20", "10.40.160.0/20"]production.tfvars
vpc_cidr_block = "10.30.0.0/16"
vpc_subnets_private = ["10.30.0.0/19", "10.30.64.0/19", "10.30.128.0/19"]
vpc_subnets_public = ["10.30.32.0/20", "10.30.96.0/20", "10.30.160.0/20"]如果我想为我的dev环境运行terraform,我将使用以下命令(假设工作区已经创建,请参阅Terraform工作区文档):
terraform workspace select devterraform plan -var-file=dev.tfvars -out=plan.outterraform apply plan.out您可以在任意多个环境中复制这种情况。
https://stackoverflow.com/questions/51146328
复制相似问题