如何根据 if else 条件 terraform 过滤来自当地人的数据?

问题描述

Main.tf

locals {
    location_mapping = [
    {
        "url": "L1.tfe.com"
        "location": "L1"
        "resource_group_name": "R1"
        "name_log_workspace_name": "W1"
    },{
        "url": "L2.tfe.com"
        "location": "L2"
        "resource_group_name": "R2"
        "name_log_workspace_name": "W2"
    },{
        "url": "L3.tfe.com"
        "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 and url 条件动态填充 nameresource_group_name。

示例

如果我通过 location value L2url value L2.tfe.com 那么我会得到 name=W2resource_group_name=R2

解决方法

我认为应该适合以下内容,假设只能有一个匹配项:

variable "location" {
  default = "L2"
}

variable "url" {
  default = "L2.tfe.com"
}

locals {
    location_mapping = [
    {
        "url": "L1.tfe.com"
        "location": "L1"
        "resource_group_name": "R1"
        "name_log_workspace_name": "W1"
    },{
        "url": "L2.tfe.com"
        "location": "L2"
        "resource_group_name": "R2"
        "name_log_workspace_name": "W2"
    },{name_log_workspace_name
        "url": "L3.tfe.com"
        "location": "L3"
        "resource_group_name": "R3"
        "name_log_workspace_name": "W3"
    }
    ]
    
   selected_mapping = lookup({for val in local.location_mapping:
                           0 => val if val.location == var.location  &&
                          val.url == var.url},{
                            "url": "default"
                            "location": "default_L"
                            "resource_group_name": "default_R"
                            "name_log_workspace_name": "default_W"
                       })
    
}

data "azurerm_log_analytics_workspace" "example" {    
    name                = local.selected_mapping.name_log_workspace_name
    resource_group_name = local.selected_mapping.resource_group_name
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...