1.Virtual.Network/firewall.tf (43 lines of code) (raw):

################################################################## # Firewall (https://learn.microsoft.com/azure/firewall/overview) # ################################################################## variable firewall { type = object({ enable = bool name = string type = string tier = string }) } resource azurerm_public_ip studio { for_each = { for virtualNetwork in local.virtualNetworks : virtualNetwork.key => virtualNetwork if var.firewall.enable } name = var.firewall.name resource_group_name = each.value.resourceGroup.name location = each.value.location sku = "Standard" allocation_method = "Static" depends_on = [ azurerm_resource_group.network_regions ] } resource azurerm_firewall studio { for_each = { for virtualNetwork in local.virtualNetworks : virtualNetwork.key => virtualNetwork if var.firewall.enable } name = var.firewall.name resource_group_name = each.value.resourceGroup.name location = each.value.location sku_name = var.firewall.type sku_tier = var.firewall.tier ip_configuration { name = "ipConfig" subnet_id = "${each.value.id}/subnets/AzureFirewallSubnet" } management_ip_configuration { name = "ipConfigManagement" subnet_id = "${each.value.id}/subnets/AzureFirewallManagementSubnet" public_ip_address_id = azurerm_public_ip.studio[each.value.key].id } depends_on = [ azurerm_subnet_network_security_group_association.studio ] }