Dav*_*vid 6 terraform terraform0.12+
我想连接共享相同键的映射列表的值。我有一个如下所示的地图列表:
tags = [
{
key = "env"
value = "dev"
},
{
key = "project"
value = "tata"
},
{
key = "env"
value = "prod"
},
{
key = "project"
value = "tata"
},
{
key = "project"
value = "titi"
}
]
Run Code Online (Sandbox Code Playgroud)
我想按以下方式转换它。
tags = [
{
key = "env"
value = ["dev", "prod"]
},
{
key = "project"
value = ["tata", "titi"]
}
]
Run Code Online (Sandbox Code Playgroud)
或者更好的是,像这样:
tags = {
env = ["dev", "prod"]
project = ["tata", "titi"]
}
Run Code Online (Sandbox Code Playgroud)
这篇文章看起来像我的问题,但我无法将其适应我的情况。
感谢您的帮助。
您可以按如下方式执行此操作:
variable "tags" {
default = [
{
key = "env"
value = "dev"
},
{
key = "project"
value = "tata"
},
{
key = "env"
value = "prod"
},
{
key = "project"
value = "tata"
},
{
key = "project"
value = "titi"
}
]
}
locals {
keys_available = distinct([for tag in var.tags: tag["key"]])
# with duplicate values
helper_map = merge([for key in local.keys_available:
{for tag in var.tags:
key => tag["value"]... if tag["key"] == key
}
]...)
# duplicates removed
final_map = {for k,v in local.helper_map: k => distinct(v)}
}
output "test" {
value = local.final_map
}
Run Code Online (Sandbox Code Playgroud)
给出:
test = {
"env" = tolist([
"dev",
"prod",
])
"project" = tolist([
"tata",
"titi",
])
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5293 次 |
最近记录: |