从JSON文件中提取环境变量并将变量传递给terraform

时间:2019-02-06 22:27:55

标签: terraform

我是terraform的新手,我正尝试使用Terraform在AWS中部署lambda函数并将环境变量从JSON文件传递到terraform。我无法在main.tf或tfvars文件中设置这些值,因为对于每个部署的lambda,这些env变量都会有所不同。

我尝试使用jq从JSON中提取值并将其放入文件中,然后将这些值传递给变量,但是当我运行terraform init命令时出现错误。

下面是值在JSON文件中的显示方式。

"environment": {
    "value1": "aa",
    "value2": "aa",
    "value3": "aa",
    "value4": "aa",
    "value5": "aa",
    "value6": "aa"
  },

在我的main.tf中,我将环境部分设置为这样,以便可以通过这些值进行传递。我将envVars变量设置在variable.tf文件中,然后在运行terraform init和terraform apply命令时将其传递。

environment {
   variables {
       "${var.envVars}"
      }
    }

我想发生的是,以上值将以所需的格式在terraform文件中设置,以便terraform可以读取它。

environment {
   variables {
     value1 = "",
     value2 = "",
     value3 = "",
     value4 = "",
     value5 = "",
     value6 = ""
  }
}

1 个答案:

答案 0 :(得分:0)

考虑使用map类型来管理这些值。

variable "envVars" {}
variable "environment" {
  type = "map"

  default = {
    dev = "<value_1>"
    uat = "<value_2>"
    prod = "<value_3>"
  }
}

因此,在您的tf代码中,您可以轻松地引用为"${var.environment[var.envVars]}"