在 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"
}
我想将 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"
}