【问题标题】:Access Terraform Cloud environment variable访问 Terraform Cloud 环境变量
【发布时间】:2020-11-12 23:37:02
【问题描述】:

我试图弄清楚 Terraform Cloud,只是想知道如何访问我在文件中的工作区中设置的环境变量?

// main.tf

// Configure the Google Cloud provider
provider "google" {
  credentials = "GOOGLE_CREDENTIALS"
  project     = "my-project"
  region      = "australia-southeast1"
}

我在云工作区GOOGLE_CREDENTIALS 上设置了一个环境变量,其值是我的 .json 键,格式为与 TFC 一起使用。

只是不知道如何在我上面的main.tf 文件中访问它

【问题讨论】:

  • 根据文档,您放置在 TF Cloud 中的环境变量会导出到远程执行的临时机器上。你是在本地执行吗?
  • 通常在使用环境变量来配置提供程序时,您根本不会在配置中引用它们。相反,您省略了provider 块中的选项,让提供者自己读取环境变量。建议使用该方法而不是提供程序的直接配置,因为它提供了最大的灵活性,可以稍后在其他上下文中运行相同的配置,例如离开 Terraform Cloud,或者如果您使用个人凭据集在本地工作以进行开发。
  • @MartinAtkins 我想会是这样,就像我在本地做的那样。我现在可以使用它,但我会尝试省略文件中的变量,看看会发生什么。

标签: terraform


【解决方案1】:

将凭据添加到 Terraform Cloud 环境变量 TF_VAR_credentials 并将其设置为敏感。那么你可以在这里使用变量:

provider "google" {
  credentials = var.credentials
  project     = var.project
  region      = var.region
}

并像这样声明你的变量

variable "credentials" {
  description = "credentials"
}

variable "project" {
  description = "project"
}

variable "region" {
  description = "region"
}

然后在应用命令上你可以通过:

terraform apply \
    -var "region=${REGION_FROM_ENV}" \
    -var "project=${PROJECT_FROM_ENV}" \
    -var "credentials=${GOOGLE_CREDENTIALS}" 

这是一个参考: https://www.terraform.io/docs/commands/apply.html#var-39-foo-bar-39-

【讨论】:

  • 如果我从 Terraform Cloud 执行此操作?我做了上述,它似乎自动完成最后一步
  • @Ari yes ${GOOGLE_CREDENTIALS} 将在 env 变量中查找,因此如果找不到该变量,则参数将作为空字符串传递,请确保在应用之前设置 env 变量,例如:导出 GOOGLE_CREDENTIALS="your_credentials"
猜你喜欢
  • 1970-01-01
  • 2021-11-08
  • 2023-01-25
  • 2018-01-17
  • 2022-08-17
  • 2021-05-19
  • 2022-01-04
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多