【问题标题】:Terraform: pass variable list to container environment variablesTerraform:将变量列表传递给容器环境变量
【发布时间】:2021-02-08 12:08:41
【问题描述】:

我正在尝试找到一种将列表变量传递/映射到 kubernetes_deployment 容器环境变量的方法。我在容器中运行一个 asp.net 核心应用程序,并尝试通过设置 env 变量来修改应用程序以覆盖应用程序 settings.json。从 settings.json 覆盖单个值不是问题,问题是我是否需要在那里定义/覆盖整个数组。

我在 terrafrom 中有这样的变量列表:

variable "allowed_cars" {
  type = list(
      object({
      manufacturer  = string
      model  = string
    })
  )
}

然后,我有 kubernetes_deployment 的资源定义和容器。

如果我像这样为容器设置环境变量,我相信它可以工作:

env {
   name  = "App__AllowedCars__0__Manufacturer"
   value = "xxx"
}
env {
   name  = "App__AllowedCars__0__Model"
   value = "xxx"
}
env {
   name  = "App__AllowedCars__1__Manufacturer"
   value = "xxx"
}
env {
   name  = "App__AllowedCars__1__Model"
   value = "xxx"
}
...

有没有办法根据 allowed_cars terraform 变量以动态方式将这些环境变量传递给容器?我不知道每个环境会定义多少个项目等等......

非常感谢。

【问题讨论】:

标签: .net-core environment-variables terraform


【解决方案1】:

这个定义的一些东西(在 azure 中使用 azurerm_container_group 的例子)

environment_variables = "${merge(var.env_vars,var.secure_env_vars,local.master_env)}"

然后就可以传入变量了

variable "env_vars" {
  type = "map"
  description = "envvaars"

  default = {
    WEB_USER         = "locust"
    HATCH_RATE       =  25
    LOCUST_COUNT     =  50
    LOCUST_FILE      = "/locust/locustfile.py"
    ATTACKED_HOST    = "https://api-perf.yrdy.com"
  }
}

variable "secure_env_vars" {
  type = "map"
  description = "secure env vars"

  default = {
    WEB_PASSWORD     = "dummy"
    API_KEY          = "test"
  }
}

【讨论】:

    【解决方案2】:

    正如@ydaetskcoR 提到的,dynamic 块是我的解决方案。

    https://www.terraform.io/docs/language/expressions/dynamic-blocks.html

    dynamic "env" {
       for_each = var.allowed_cars
       content {
          name = "App__AllowedCars__0__${env.key}__Manufacturer"
          value = env.value["manufacturer"]
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-04-08
      • 2015-09-18
      • 2022-01-16
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2015-08-10
      • 2016-12-08
      相关资源
      最近更新 更多