マネージド Sql サーバー上の App Service プランの IP アドレスをホワイトリストに登録したいと考えています。
問題は、リソースazurerm_app_service_planが、属性possible_outbound_ip_addressesで IP アドレスをコンマ区切り値として公開していることです。
これらの IP ごとに1 つの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アドレスを変数として追加し、変数の値を手動で設定しています。
これらのファイアウォール ルールを作成する正しい方法はどれですか?