在 Terraform 中为 azurerm_app_service_plan 创建 azurerm_sql_firewall_rule
Create azurerm_sql_firewall_rule for an azurerm_app_service_plan in Terraform
我想将托管 Sql 服务器上应用服务计划的 IP 地址列入白名单。
问题是,资源 azurerm_app_service_plan 在属性 possible_outbound_ip_addresses 上将其 IP 地址公开为逗号分隔值.
我需要为每个 ip 创建一个 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
}
然后我得到错误:
The "for_each" value depends on resource attributes that cannot be
determined until apply, so Terraform cannot predict how many instances
will be created. To work around this, use the -target argument to
first apply only the resources that the for_each depends on.
我不确定如何解决这个问题。
暂时把ip地址加成变量,手动设置变量值
创建这些防火墙规则的正确方法是什么?
我正在尝试处理同样的问题。我的解决方法是执行多步设置。
在第一步中,我 运行 terraform 配置创建数据库、应用程序服务、api 管理和一些其他资源。接下来我部署应用程序。最后,我再次 运行 terraform,但这次第二个配置创建 sql 防火墙规则和 api 管理 api 来自已部署的应用程序 swagger 定义。
我想将托管 Sql 服务器上应用服务计划的 IP 地址列入白名单。
问题是,资源 azurerm_app_service_plan 在属性 possible_outbound_ip_addresses 上将其 IP 地址公开为逗号分隔值.
我需要为每个 ip 创建一个 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
}
然后我得到错误:
The "for_each" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the for_each depends on.
我不确定如何解决这个问题。
暂时把ip地址加成变量,手动设置变量值
创建这些防火墙规则的正确方法是什么?
我正在尝试处理同样的问题。我的解决方法是执行多步设置。 在第一步中,我 运行 terraform 配置创建数据库、应用程序服务、api 管理和一些其他资源。接下来我部署应用程序。最后,我再次 运行 terraform,但这次第二个配置创建 sql 防火墙规则和 api 管理 api 来自已部署的应用程序 swagger 定义。