使用 terraform 对 Azure 上的应用服务进行动态 IP 限制

Dynamic IP Restriction for App Services on Azure using terraform

我正在寻找在应用服务上添加多个 ip 地址限制的解决方案: 下面是我正在尝试修复的代码,但我很难实现:

    variable "ip_address_list" {
  type = list
  default = ["20.20.20.3" , "10.10.10.2"]}

这只是我要实现的变量的一个示例,site_config 的一部分如下:

site_config {
  dynamic "ip_restriction" {
for_each = var.ip_address_list
  content {
    ip_address  = cidrhost(ip_restriction.value, 0)
    action                    = "Allow"
  }
}

当我 运行 terraform plan 时,我收到以下错误:

on main.tf line 208, in resource "azurerm_app_service" "hook-service":

208: ip_address = cidrhost(ip_restriction.value, 0) ip_restriction.value is "20.20.20.3"

Call to function "cidrhost" failed: invalid CIDR expression: invalid CIDR address: 20.20.20.3.

我收到了两个 IP 地址的错误。此外,如果有办法实施此解决方案,我需要基于虚拟子网进行另一个限制,它必须与模块中创建的其他服务器进行通信

{
      ip_address                = null
      name                      = "Subnet"
      action                    = "Allow"
      virtual_network_subnet_id = azurerm_subnet.subnet.id
      action                    = "Allow"
      priority                  = 200
      service_tag               = null
    }

子网已将服务端点创建为 ("Microsoft.Web")

cidrhost 要求前缀采用 CIDR 表示法,例如

"20.20.20.3/32"

https://www.terraform.io/docs/language/functions/cidrhost.html