Terraform:如何引用 Terraform 云环境变量?

Fas*_*ous 3 terraform terraform-provider-aws

我正在使用 Terraform 云。我希望将 AWS 标签与我的资源结合使用。我想用当前的 GIT 分支名称标记 Terraform 中定义的每个资源。这样我就可以将开发与生产分开。

Terraform 有一个环境变量列表,它们确实引用了 GIT 分支名称及其在云中的服务:

TFC_CONFIGURATION_VERSION_GIT_BRANCH - This is the name of the branch that the associated Terraform configuration version was ingressed from (e.g. master).
Run Code Online (Sandbox Code Playgroud)

如何在示例 VPC 的以下资源中引用TFC_CONFIGURATION_VERSION_GIT_BRANCH环境变量?

resource "aws_vpc" "example_vpc" {
  cidr_block = "10.0.0.0/16"

  tags = {
    product = var.product
    stage = var.TFC_CONFIGURATION_VERSION_GIT_BRANCH
  }
}
Run Code Online (Sandbox Code Playgroud)

参考:https://www.terraform.io/docs/language/values/variables.html#environment-variables

Fas*_*ous 14

我想到了!希望有关云的文档更加清晰。

您必须设置一个空变量。我在 Variables.tf 中将我的定义为:

variable "TFC_CONFIGURATION_VERSION_GIT_BRANCH" {
  type = string
  default = ""
}
Run Code Online (Sandbox Code Playgroud)

根据我链接的相关文档。每次云运行时, TFC_CONFIGURATION_VERSION_GIT_BRANCH都会自动注入到环境变量中。定义环境变量的全名作为变量的工作。

resource "aws_vpc" "example_vpc" {
  cidr_block = "10.0.0.0/16"

  tags = {
    product = var.product
    stage = var.TFC_CONFIGURATION_VERSION_GIT_BRANCH
  }
}
Run Code Online (Sandbox Code Playgroud)

然后云端的计划输出成功:

Terraform will perform the following actions:

  # aws_vpc.example_vpc will be updated in-place
  ~ resource "aws_vpc" "example_vpc" {
        id                               = "vpc-0b19679e6464b8481"
      ~ tags                             = {
          ~ "stage"   = "None" -> "develop"
            # (1 unchanged element hidden)
        }
        # (14 unchanged attributes hidden)
    }
Run Code Online (Sandbox Code Playgroud)