在 Terraform 中将列表转换为带有索引的地图

Convert list to map with index in Terraform

我想将 terraform 中的简单字符串列表转换为以键作为索引的映射。

我想从这样的事情开始:

locals {
  keycloak_secret = [
    "account-console",
    "admin-cli",
    "broker",
    "internal",
    "realm-management",
    "security-admin-console",
  ]
}

类似于

map({0:"account-console", 1:"admin-cli"}, ...) 

我的目标是利用 terraform 0.13 的新功能在 terraform module.

上使用地图循环

我没有找到任何解决方案,请帮助我,谢谢。

如果我没理解错的话,你想把列表转换成地图。如果是这样,那么您可以按如下方式进行:

locals {
  keycloak_secret_map  = {for idx, val in local.keycloak_secret: idx => val}  
}

产生:

{
  "0" = "account-console"
  "1" = "admin-cli"
  "2" = "broker"
  "3" = "internal"
  "4" = "realm-management"
  "5" = "security-admin-console"
}

我想出了另一个解决方案,比@Marcin 的答案更难看。

locals = {
    keycloak_secret_map = for secret_name in local.keycloak_secret : index(local.keycloak_secret, secret_name) => secret_name
}

给出

{
  0 = "account-console"
  1 = "admin-cli"
  2 = "broker"
  3 = "internal"
  4 = "realm-management"
  5 = "security-admin-console"
}