首页 > 解决方案 > 如何根据条件 terraform 过滤来自本地人的数据?

问题描述

主文件

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

我想根据本地数据块中的位置条件动态填充名称资源组名称。

例子

如果我通过location value L2然后name=W2resource_group_name=R2

标签: jsonterraformterraform-provider-azurehclhashicorp

解决方案


正如评论中所建议的,您可以重新组织您的local.location_mapping映射,例如,称为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"]
}

推荐阅读