【问题标题】:Referring to sourced ARM variables in Terraform在 Terraform 中引用源 ARM 变量
【发布时间】:2020-02-13 17:29:45
【问题描述】:

我正在尝试使用 terraform 创建 AKS,在 service principle 块中,我们需要传递 client_idclient_secret。 Terraform 能够读取环境变量并将它们作为 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

【问题讨论】:

  • 还有问题吗?它解决了你的问题吗?如果是,请采纳。

标签: terraform terraform-provider-azure


【解决方案1】:

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

一个是 Azure 提供商的身份验证。它可以引用ARM_CLIENT_ID=$AZ_USERNAMEARM_CLIENT_SECRET=$AZ_PASSWORDARM_TENANT_IDARM_SUBSCRIPTION_ID等环境变量的必要输入。

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

作为定义变量的其他方法的后备,Terraform 在自己进程的环境中搜索环境变量 命名为 TF_VAR_ 后跟声明变量的名称。

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

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

export TF_VAR_aksname=example-aks

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

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

那么输出会是这样的:

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 1970-01-01
    • 2016-12-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2018-08-06
    • 2021-08-08
    相关资源
    最近更新 更多