在 Terraform 中引用 sourced ARM 变量
Referring to sourced ARM variables in Terraform
我正在尝试使用 terraform 创建 AKS,在 service principle
块中我们需要传递 client_id
和 client_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_USERNAME
、ARM_CLIENT_SECRET=$AZ_PASSWORD
、ARM_TENANT_ID
和ARM_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
,那么需要做两件事:
- 导出带有前缀
TF_VAR_
的环境变量aksname
:
export TF_VAR_aksname=example-aks
- 在Terraform文件中定义变量
aksname
并引用,这里我只是在输出块中引用:
variable "aksname" {}
output "aks_name" {
value = "${var.aksname}"
}
那么输出会是这样的:
我正在尝试使用 terraform 创建 AKS,在 service principle
块中我们需要传递 client_id
和 client_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_USERNAME
、ARM_CLIENT_SECRET=$AZ_PASSWORD
、ARM_TENANT_ID
和ARM_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
,那么需要做两件事:
- 导出带有前缀
TF_VAR_
的环境变量aksname
:
export TF_VAR_aksname=example-aks
- 在Terraform文件中定义变量
aksname
并引用,这里我只是在输出块中引用:
variable "aksname" {}
output "aks_name" {
value = "${var.aksname}"
}
那么输出会是这样的: