首页 > 解决方案 > Terraform:属性文件到 env 部分

问题描述

我有一个 .properties,我想应用一个模板来为我的部署生成 env {} 条目。

像这样的东西:

          {{- range $key, $value := .Values.configurationOverrides }}
         env {
            name  = {{ printf "REST_%s" $key | replace "." "_" | upper | quote }}
            value = 

生成 env {} 条目:

  ...
  spec {
    container {
      image = "**"
      name  = "rest"

      env {
        name  = "REST_FROM_PROPERTIES_FILE"
        value = "VALUE FROM PROPERTIES FILE"
      }
      ...

可能吗?

谢谢。

标签: terraform

解决方案


注意:我假设您使用 Terraform 0.12.x

解决方案的一部分是动态块,它允许您遍历值列表并动态添加 env 部分:

properties_list = [{ name: "MY_ENV_VAR", value: "VALUE", },]
dynamic "env" {
  for_each = var.properties_list
  name = env.value.name
  value = env.value.value
}

困难的部分是解析属性文件,因为在 Terraform 中没有开箱即用的方法。您可以使用jsondecode 之类的东西将 JSON 解码为 terraform 对象。因此,您可以先将属性文件转换为 JSON 文件(例如,使用此 npm 包),然后将其解码为 terraform 对象。


推荐阅读