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

#json #terraform #terraform-provider-azure #hcl #hashicorp

#json #terraform #terraform-provider-azure #hcl #hashicorp

Вопрос:

Main.tf

 locals {
    location_mapping = [
    {
        "location": "L1"
        "resource_group_name": "R1"
        "name_log_workspace_name": "W1"
    },
    {
        "location": "L2"
        "resource_group_name": "R2"
        "name_log_workspace_name": "W2"
    },
    {
        "location": "L3"
        "resource_group_name": "R3"
        "name_log_workspace_name": "W3"
    }
    ]
}

data "azurerm_log_analytics_workspace" "example" {
    # Populate name and resource group based on var.location(L2) condition if location matches in locals
    name                = "W2"
    resource_group_name = "R2"
}
 

Я хочу динамически заполнять name и resource_group_name на основе условия местоположения в блоке данных от локальных пользователей.

Пример

если я передам location value L2 , то name=W2 и resource_group_name=R2

Комментарии:

1. Не могли бы вы реструктурировать свои входные данные, чтобы у вас была карта местоположений с именами и названиями ресурсов? Если это так, то это довольно просто сделать.

Ответ №1:

Как было предложено в комментариях, вы можете реорганизовать свое local.location_mapping отображение into, например, вызывается local.helper_map :

 locals {
      helper_map = {for val in local.location_mapping:
                    val["location"]=>val}
}
 

Тогда в вашем azurerm_log_analytics_workspace вы можете использовать его следующим образом:

 data "azurerm_log_analytics_workspace" "example" {
    # Populate name and resource group based on var.location(L2) condition if location matches in locals
    name                = local.helper_map["L2"]["name_log_workspace_name"]
    resource_group_name = local.helper_map["L2"]["resource_group_name"]
}
 

Комментарии:

1. Привет @Marcin вы хотите сказать, что 2 локальных блока, один для данных location_mapping, а другой для helper_map.

2. @NaveenKumar Вы можете использовать одну для обеих переменных.

3. Привет @Marcin что делать, если я хочу соответствовать 2 условиям, таким как location is L2 и resource_group_name is R2