Terraform - 根据内部地图的值迭代地图的地图

RMD*_*Dev 6 foreach resources for-loop terraform

我正在尝试根据地图的内部地图的值创建资源。如果该特定值为 true,则创建资源

请找到下面的代码:

variable "ip_restrictions" {
  type        = map(map(string))
  default = {
    test01 = {
      name                      = "test01"
      start_ip_address          = "0.0.0.0"
      end_ip_address            = "0.0.0.0"
      is_firewall               = false
    },
    test02 = {
      name                      = "test02"
      start_ip_address          = "0.0.0.0"
      end_ip_address            = "0.0.0.0"
      is_firewall               = true
    }
  }
}

resource "azurerm_sql_firewall_rule" "sql_firewall_rules" {
  for_each = {
    for restr in var.ip_restrictions :
    restr => restr
    if restr.is_firewall == true
  }
  
  name                = each.value.name
  resource_group_name = azurerm_resource_group.rg.name
  server_name         = azurerm_sql_server.sqls.name
  start_ip_address    = each.value.start_ip_address
  end_ip_address      = each.value.end_ip_address
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 7

你的正确形式for_each应该是:

  for_each = {
    for key, restr in var.ip_restrictions :
      key => restr if restr.is_firewall == "true"
  }
Run Code Online (Sandbox Code Playgroud)

这将过滤掉所有带有is_firewallof的记录false