I have a local value like below and i want to remove the Mongo-S pair from that since it doesn't have dbv value
merged_mongo_locals = {
MongoA-0 = {
az = "ap-south-1a"
dbv = 50
service_name = "MongoA"
}
MongoC-0 = {
az = "ap-south-1a"
dbv = 50
service_name = "MongoC"
}
MongoC-1 = {
az = "ap-south-1b"
dbv = 50
service_name = "MongoC"
}
MongoD-0 = {
az = "ap-south-1a"
dbv = 100
service_name = "MongoD"
}
MongoD-1 = {
az = "ap-south-1b"
dbv = 100
service_name = "MongoD"
}
MongoD-2 = {
az = "ap-south-1c"
dbv = 100
service_name = "MongoD"
}
MongoM-0 = {
az = "ap-south-1a"
dbv = 50
service_name = "MongoM"
}
MongoS-0 = {
az = "ap-south-1a"
service_name = "MongoS"
}
MongoS-1 = {
az = "ap-south-1b"
service_name = "MongoS"
}
}
I'm using below method to remove that MongoS key pair
output "Mongo-ips" { value = {for k,v in local.merged_mongo_locals: k => v if ! contains(values(v),"dbv")} }
But the output looks below and it didn't exclude the MongoS pair even though it doesn't have dbv value
Changes to Outputs:
+ Mongo-ips = {
+ MongoA-0 = {
+ az = "ap-south-1a"
+ dbv = 50
+ service_name = "MongoA"
}
+ MongoC-0 = {
+ az = "ap-south-1a"
+ dbv = 50
+ service_name = "MongoC"
}
+ MongoC-1 = {
+ az = "ap-south-1b"
+ dbv = 50
+ service_name = "MongoC"
}
+ MongoD-0 = {
+ az = "ap-south-1a"
+ dbv = 100
+ service_name = "MongoD"
}
+ MongoD-1 = {
+ az = "ap-south-1b"
+ dbv = 100
+ service_name = "MongoD"
}
+ MongoD-2 = {
+ az = "ap-south-1c"
+ dbv = 100
+ service_name = "MongoD"
}
+ MongoM-0 = {
+ az = "ap-south-1a"
+ dbv = 50
+ service_name = "MongoM"
}
+ MongoS-0 = {
+ az = "ap-south-1a"
+ service_name = "MongoS"
}
+ MongoS-1 = {
+ az = "ap-south-1b"
+ service_name = "MongoS"
}
}
Please guide me what is the wrong here
This should help you.
output "Mongo-ips" {
value = { for k, v in local.merged_mongo_locals : k => v if contains(keys(v), "dbv") }
}