我们使用terraform在AWS内部开发我们的基础设施,我们有3个独立的环境:Dev,Stage和Prod
开发:需要 - public,private1a,privatedb和privatedb2子网Stage&Prod:需要 - public,private_1a,private_1b,privatedb和privatedb2子网
我有main.tf,变量,dev.tfvars,stage.tfvars和prod.tfvars . 我试图理解如何使用我目前用于开发环境的main.tf文件,并使用.tfvars文件创建stage和prod所需的资源 .
terraform apply -var-file = dev.tfvars
terraform apply -var-file = stage.tfvars(这应该创建子网private_1b以及其他子网)
terraform apply -var-file = prod.tfvars(这应该创建子网private_1b以及其他子网)
如果您需要进一步说明,请与我们联系 .
谢谢,
1 回答
你要做的确实是正确的方法 . 您还必须使用terraform workspaces .
从本质上讲,这意味着您将拥有适用于您拥有的每个环境的工作区 .
让我们看一些例子 .
我有以下文件:
main.tf
variables.tf
dev.tfvars
production.tfvars
main.tf
该文件包含VPC模块9可以是c)的任何资源 . 我们通过var调用变量 . 功能:
variables.tf
该文件包含我们所有的变量 . 请注意,我们不在此处指定 default ,这将确保我们100%确定我们正在使用.tfvars文件中的变量 .
基本上就是这样 . 我们的.tfvars文件如下所示:
dev.tfvars
production.tfvars
如果我想为我的开发环境运行terraform,这些是我将使用的命令(假设已经创建了工作空间,请参阅Terraform workspace docs):
选择开发环境:
terraform workspace select dev
运行计划以查看更改:
terraform plan -var-file=dev.tfvars -out=plan.out
应用更改:
terraform apply plan.out
您可以根据需要为多个环境复制此项 .