我想将托管 Sql Server 上的应用服务计划的 IP 地址列入白名单。
问题是,资源azurerm_app_service_plan在属性possible_outbound_ip_addresses上将其 ip 地址公开为逗号分隔值。
我需要为这些 ips 中的每一个创建一个azurerm_sql_firewall_rule。
如果我尝试以下方法,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_each 所依赖的资源。
我不确定如何解决这个问题。
目前,我已将 ip 地址添加为变量,并手动设置变量的值。
创建这些防火墙规则的正确方法是什么?