微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Terraform-根据内部地图的值遍历地图

如何解决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
}

解决方法

您的for_each的正确格式应为:

  for_each = {
    for key,restr in var.ip_restrictions :
      key => restr if restr.is_firewall == "true"
  }

这将过滤出is_firewall中的false中的所有记录。

,

由于您的var.ip_restrictions地图而不是列表,因此您需要像地图一样迭代(返回键和值)。您遇到的最短的方法:

for_each = {
  for key,restr in var.ip_restrictions :
    key => restr if restr.is_firewall
}

礼物:

"test02" = {
  "end_ip_address"   = "0.0.0.0"
  "is_firewall"      = "true"
  "name"             = "test02"
  "start_ip_address" = "0.0.0.0"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?