#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