【问题标题】:How do we compare variable and select right key, value pair accordingly in terraform我们如何在 terraform 中比较变量并相应地选择正确的键、值对
【发布时间】:2021-09-29 13:11:16
【问题描述】:

我每个地区有 2 个 ACR,我们有多个地区(AMAP、欧盟、中国)。现在我正在编写一个 terraform 代码来定义一个变量 acr_region 如下

variable "acr_regions" {
  type = map
  description = "ACR region"
  default = {
    cne = "cneacr.azurecr.cn"
    cnn = "cnn2acr.azurecr.cn"
    cus = "cusacr.azurecr.io"
    eus2 = "eus2acr.azurecr.io"
    eus = "eusacr.azurecr.io"
    neu = "neuacr.azurecr.io"
    weu = "weuacr.azurecr.io"
  }
}

我的要求是如果我的集群名称包括 weu(westeurope)、neu、eus 等。那么它应该比较 acr_region 地图并选择相应的 acr 来拉取图像。

例如:如果我的集群名称是eus.k8s,那么它应该尝试从eus = "eusacr.azurecr.io" 中提取图像。

请让我知道 terraform 是否有可能实现这一点?

【问题讨论】:

    标签: azure-devops terraform azure-aks terraform-provider-azure


    【解决方案1】:

    您可以这样做拆分集群名称split(".", "eusacr.azurecr.io"),您会得到一个列表,其中第一个索引为eusacr 映射键,注意:它仅在集群名称遵循此模式时才有效,因为我不知道天蓝色命名约定<acr-region>.<etc>.<etc>

    那么就可以使用lookup来获取对应的区域值lookup(acr_regions, "eusacr")

    locals {
        split_var = split(".", "eusacr.azurecr.io") // cluster name
        acr_region = lookup(var.acr_regions, local.split_var[0])
    }
    

    使用本地块来应用转换

    【讨论】:

    • 我尝试过但没有成功。你有什么进一步的建议吗?这是集群名称的列表。变量“scp_clusters”{类型=列表(字符串)描述=“SCP集群列表”默认=[“amap-teusapp07-k8s”,“amap-teus2app01-k8s”]}amap-区域t-测试eus-东部美国应用程序-团队名称
    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2020-11-11
    相关资源
    最近更新 更多