【问题标题】:How to filter data from locals based on condition terraform?如何根据条件 terraform 过滤来自本地人的数据?
【发布时间】:2023-03-29 10:25:02
【问题描述】:

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

我想根据本地数据块中的位置条件动态填充 nameresource_group_name

示例

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

【问题讨论】:

  • 您能否重组您的输入数据,以便获得名称和资源名称的位置映射?如果是这样,那就很简单了。

标签: json terraform terraform-provider-azure hcl hashicorp


【解决方案1】:

按照 cmets 的建议,您可以将 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"]
}

【讨论】:

  • 嗨@Marcin,你的意思是说2个本地块,一个用于location_mapping数据,另一个用于helper_map。
  • @NaveenKumar 两个变量都可以使用一个。
  • 嗨@Marcin,如果我想匹配location is L2resource_group_name is R2等2个条件,该怎么办
猜你喜欢
  • 2021-06-02
  • 1970-01-01
  • 2018-10-08
  • 2018-10-04
  • 2018-05-17
  • 1970-01-01
  • 2021-05-03
  • 2023-03-19
相关资源
最近更新 更多