Terraform:将变量列表传递给容器环境变量

时间:2021-02-08 12:08:41

标签: .net-core environment-variables terraform

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

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

    var yMin = d3.min(data, function (d) {
        return parseFloat(d.y);
    });
    var y0 = yMin-margin.bottom;
    if (yMin < margin.bottom) {
        y0 = -5;
    }
    if (y0 > 0) {
        y0 = -5;
    }

    var yMax = d3.max(data, function (d) {
        return parseFloat(d.y);
    });
    var yScale = d3.scaleLinear()
        .domain([y0, yMax + 10])
        .range([height, 0]);

   svg.append("linearGradient")
        .attr("id", "line-gradient")
        .attr("gradientUnits", "userSpaceOnUse")
        .attr("x1", 0).attr("y1", 0)
        .attr("x2", 0).attr("y2", yScale(yMin))
        .selectAll("stop")
        .data([
            {offset: "0%", color: "red"},
            {offset: "50%", color: "red"},
            {offset: "50%", color: "lawngreen"},
            {offset: "100%", color: "lawngreen"}

        ])
        .enter().append("stop")
        .attr("offset", function(d) { return d.offset; })
        .attr("stop-color", function(d) { return d.color; })

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

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

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

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

此定义的某些内容(使用天蓝色中的 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"
  }
}

答案 1 :(得分:0)

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

Screenshot of Error

import cv2
import time

cap= cv2.VideoCapture(0)


fps= int(cap.get(cv2.CAP_PROP_FPS))

print("This is the fps ", fps)

if cap.isOpened() == False:
    print("Error File Not Found")

while cap.isOpened():
    ret,frame= cap.read()

    if ret == True:

        time.sleep(1/fps)
        img = cv2.imread("/home/pi/Downloads/red-removebg-preview (1).png", cv2.IMREAD_UNCHANGED)
        frame[100:390, 0:290]=img 
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    else:
        break
相关问题