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

时间:2020-08-14 08:34:35

标签: terraform hcl

我想将一个简单的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.上使用地图上的循环

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

2 个答案:

答案 0 :(得分:2)

如果我的理解正确,您想将列表转换为地图。如果是这样,那么您可以按照以下步骤进行操作:

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"
}

答案 1 :(得分:0)

我想出了另一种解决方案,它比@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"
}