#terraform #local-variables #terraform-provider-azure
Вопрос:
У меня есть локальное значение, как показано ниже, и я хочу удалить из него пару Mongo-S, так как у нее нет значения dbv
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"
}
}
Я использую приведенный ниже метод для удаления этой пары ключей MongoS
выведите «Mongo-ips» { значение = {для k,v в локальных.merged_mongo_locals: k => v, если ! содержит(значения(v),»dbv»)} }
Но вывод выглядит ниже, и он не исключил пару MongoS, даже если у нее нет значения dbv
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"
}
}
Пожалуйста, объясните мне, что здесь не так
Ответ №1:
Это должно вам помочь.
output "Mongo-ips" {
value = { for k, v in local.merged_mongo_locals : k => v if contains(keys(v), "dbv") }
}