首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Terraform中处理多个环境/变量

在Terraform中处理多个环境/变量
EN

Stack Overflow用户
提问于 2018-07-03 03:37:19
回答 1查看 6K关注 0票数 6

我们使用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 )

如果你需要进一步的澄清,请告诉我。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 09:38:37

你想要做的确实是正确的方法。您还必须使用terraform工作区

Terraform从一个名为"default“的工作区开始。这个工作区是特殊的,因为它是默认的,也是因为它永远不能被删除。如果您从未显式地使用过工作区,那么您只在“默认”工作区上工作过。 工作区由命令的terraform工作区集管理。要创建一个新的工作区并切换到它,您可以使用terraform工作区new;要切换环境,可以使用terraform工作区选择;等等。

本质上,这意味着您将为您所拥有的每个环境创建一个工作区。

让我们用一些例子来看看。

我有以下文件:

  1. main.tf
  2. variables.tf
  3. dev.tfvars
  4. production.tfvars

main.tf

此文件包含VPC模块9可以是任何资源ofc)。我们通过var调用变量。职能:

代码语言:javascript
复制
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文件的变量。

代码语言:javascript
复制
variable "vpc_cidr_block" {}

variable "vpc_subnets_private" {
  type = "list"
}

variable "vpc_subnets_public" {
  type = "list"
}

基本上就是这样。我们的.tfvars文件将如下所示:

dev.tfvars

代码语言:javascript
复制
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

代码语言:javascript
复制
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工作区文档):

  1. 选择dev环境:terraform workspace select dev
  2. 运行一个计划来查看更改:terraform plan -var-file=dev.tfvars -out=plan.out
  3. 应用更改:terraform apply plan.out

您可以在任意多个环境中复制这种情况。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51146328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档