在Terraform中为azurerm\应用程序\服务\计划创建azurerm\ sql\防火墙\规则

在Terraform中为azurerm\应用程序\服务\计划创建azurerm\ sql\防火墙\规则,terraform,azure-rm,Terraform,Azure Rm,我想将托管Sql Server上应用程序服务计划的ip地址列入白名单。 问题是,资源azurerm\u应用程序\u服务\u计划在属性可能的出站\u ip\u地址上以逗号分隔的值公开其ip地址 我需要为每个IP创建一个azurerm\u sql\u防火墙\u规则。 如果我尝试以下方法,Terraform会给出一个例外: locals { staging_app_service_ip = { for v in split(",", azurerm_functio

我想将托管Sql Server上应用程序服务计划的ip地址列入白名单。
问题是,资源azurerm\u应用程序\u服务\u计划在属性可能的出站\u ip\u地址上以逗号分隔的值公开其ip地址

我需要为每个IP创建一个azurerm\u sql\u防火墙\u规则。
如果我尝试以下方法,Terraform会给出一个例外:

locals {
   staging_app_service_ip = {
      for v in split(",", azurerm_function_app.prs.possible_outbound_ip_addresses) : v => v
   }
}

resource "azurerm_sql_firewall_rule" "example" {
  for_each            = local.staging_app_service_ip
  name                = "my_rules_${each.value}"
  resource_group_name = data.azurerm_resource_group.example.name
  server_name         = var.MY_SERVER_NAME
  start_ip_address    = each.value
  end_ip_address      = each.value
}
然后我得到了错误:

“for_each”值取决于资源属性,这些属性不能 在应用之前确定,因此Terraform无法预测有多少实例 将创建。要解决此问题,请使用-target参数 首先,仅应用for_各自依赖的资源

我不知道如何解决这个问题。
目前,我已经将ip地址添加为变量,并手动设置变量的值


创建这些防火墙规则的正确方法是什么?

我正试图解决同样的问题。我的解决方法是执行多步骤设置。 在第一步中,我运行terraform配置,它在其中创建数据库、应用程序服务、api管理和一些其他资源。接下来,我部署应用程序。最后,我再次运行terraform,但这次第二个配置根据部署的应用程序swagger定义创建sql防火墙规则和api管理api