在 Terraform 中引用 sourced ARM 变量

Referring to sourced ARM variables in Terraform

我正在尝试使用 terraform 创建 AKS,在 service principle 块中我们需要传递 client_idclient_secret。 Terraform 能够读取 env 变量并在它们作为 TF_VAR_name 前缀时获取它们。

Terraform 还提到,对于 provider block,我们可以将客户端相关变量导出为 ARM_CLIENT_name。所以我的问题是如何使用这些 ARM 变量来配置我的 AKS。

我现在就是这样做的


  - export ARM_CLIENT_ID=$AZ_USERNAME
  - export ARM_CLIENT_SECRET=$AZ_PASSWORD
  - export ARM_TENANT_ID=$AZ_TENANT
  - export ARM_SUBSCRIPTION_ID=AZ_SUBSCRIPTION_ID

如果我不能引用上面的环境变量那么我应该做

 - export ARM_CLIENT_ID=$AZ_USERNAME
 - export TF_VAR_client_id=$AZ_PASSWORD
 - export ARM_CLIENT_SECRET=$AZ_PASSWORD
 - export TF_VAR_client_secret=$AZ_PASSWORD
 - export ARM_TENANT_ID=$AZ_TENANT
 - export ARM_SUBSCRIPTION_ID=AZ_SUBSCRIPTION_ID

你在问题中显示的是两种不同的情况。

一个是 Azure 提供商的身份验证。它可以从ARM_CLIENT_ID=$AZ_USERNAMEARM_CLIENT_SECRET=$AZ_PASSWORDARM_TENANT_IDARM_SUBSCRIPTION_ID.

等环境变量中引用必要的输入

另一种是引用普通变量。您可以将所有需要的变量导出为带有前缀 TF_VAR_ 的环境变量,但您需要做的另一件事是您还需要在 Terraform 文件中定义变量。如图所示 here:

As a fallback for the other ways of defining variables, Terraform searches the environment of its own process for environment variables named TF_VAR_ followed by the name of a declared variable.

比如要从环境变量中引用变量aksname,那么需要做两件事:

  1. 导出带有前缀TF_VAR_的环境变量aksname:

export TF_VAR_aksname=example-aks

  1. 在Terraform文件中定义变量aksname并引用,这里我只是在输出块中引用:
variable "aksname" {}

output "aks_name" {
  value = "${var.aksname}"
}

那么输出会是这样的: