как удалить пару ключевых значений с локальной карты в terraform?

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