在Terraform配置中获取环境变量?

时间:2016-04-14 16:55:13

标签: configuration terraform

我有两个环境变量。一个是TF_VAR_UN,另一个是TF_VAR_PW。然后我有一个看起来像这样的terraform文件。

resource "google_container_cluster" "primary" {
    name = "marcellus-wallace"
    zone = "us-central1-a"
    initial_node_count = 3

    master_auth {
        username = ${env.TF_VAR_UN}
        password = ${env.TF_VAR_PW}
    }

    node_config {
        oauth_scopes = [
            "https://www.googleapis.com/auth/compute",
            "https://www.googleapis.com/auth/devstorage.read_only",
            "https://www.googleapis.com/auth/logging.write",
            "https://www.googleapis.com/auth/monitoring"
        ]
    }
}

我想用环境变量TF_VAR_UNTF_VAR_PW替换的两个值是用户名和密码值。我尝试了上面显示的内容,没有成功,而且我还玩过其他一些东西,但总会遇到语法问题。

5 个答案:

答案 0 :(得分:13)

我会尝试更像这样的东西,它似乎更接近documentation

stations=["STATIC","97.2", "99.6", "101.7", "105.3", "108.5"]
a =input("enter 3 to seek next")
while a !="0":
   if a =="3":
      print(stations[-1])

CLI命令如下所示。

variable "UN" {}
variable "PW" {}

resource "google_container_cluster" "primary" {
name = "marcellus-wallace"
zone = "us-central1-a"
initial_node_count = 3

master_auth {
    username = "${var.UN}"
    password = "${var.PW}"
}

node_config {
    oauth_scopes = [
        "https://www.googleapis.com/auth/compute",
        "https://www.googleapis.com/auth/devstorage.read_only",
        "https://www.googleapis.com/auth/logging.write",
        "https://www.googleapis.com/auth/monitoring"
    ]
}

答案 1 :(得分:1)

使用插值语法会以地形IsDup发出警告。现在,您无需使用插值语法。您可以将其引用为v0.12.18

警告: 从语言的角度要理解的重要一件事是,您不能使用环境变量声明变量。您只能使用环境变量为脚本中的已声明变量分配值。例如,假设您具有以下.tf脚本

var.hello

现在,如果环境具有变量TF_VAR_hello =“ foobar”,则在运行时变量hello将具有值“ foobar”。如果在不声明变量的情况下分配变量,则不会产生任何影响。

答案 2 :(得分:0)

为了使用变量,需要用"" 例如:

  

username =" $ {var.UN}"

答案 3 :(得分:0)

答案 4 :(得分:0)

您可以执行以下操作以使其正常工作。

1.在 terraform 配置中声明要用作环境变量的变量。 --> 变量 "db_password" { type= string }

  1. 在要使用此变量的资源部分将其更改为 -->"db_password":"${var.db_password}"

3.导出环境变量。 -->导出TF_VAR_db_password="##password##"

4.terraform 计划或申请