使用 terraform 在 Azure 上为应用服务添加多个 IP 限制时的动态优先级更改

Dynamic Priority change when adding multiple IP Restriction for App Services on Azure using terraform

我正在寻找更改动态“ip_restriction”优先级的解决方案 我使用的代码是

variable "ip_address_list" { 
  type = list 
  default = ["20.20.20.3/32" , "10.10.10.2/32"] 
}
site_config {
  dynamic "ip_restriction" {
for_each = var.ip_address_list
  content {
    ip_address  = cidrhost(ip_restriction.value, 0)
    action                    = "Allow"
    priority                  = 100
  }
}

使用这段代码时,我得到了以下输出

  • ip_restriction= [
  • {
  • action= "Allow"
  • headers= (known after apply)
  • ip_address= "20.20.20.3"
  • name= (known after apply)
  • priority= 100
  • service_tag= null
  • virtual_network_subnet_id = null },
  • {
  • action= "Allow"
  • headers= (known after apply)
  • ip_address= "10.10.10.2"
  • name= (known after apply)
  • priority= 100
  • service_tag= null
  • virtual_network_subnet_id = null }, ]

你可以这样使用:

locals {
 ip_address_list = [
           {     
                  ip_add : "20.20.20.3/32",
                  prior : "100"
            },
            {     
                 ip_add : "10.10.10.2/32",
                 prior : "101"
            }
     ]
}

然后

  site_config {
  dynamic "ip_restriction" {
for_each = local.ip_address_list
  content {
    ip_address  = ip_restriction.value["ip_add"]
    action                    = "Allow"
    priority                  = ip_restriction.value["prior"]
  }
}

输出:

注意:您可以按照上面给出的方式声明局部变量,然后使用上面提供的站点配置块来代替声明变量。

更新: 根据这个 Github issue @martinjt 评论说它期望 ipadd/32 因为子网掩码不包含在新版本中。因此,通过删除 cidrhost 更改上面的代码并进行应用,它已成功部署。

错误:cidrhost

删除后 cidrhost