main.tf (162 lines of code) (raw):

module "firewall_policy" { source = "Azure/avm-res-network-firewallpolicy/azurerm" version = "0.3.2" for_each = local.firewall_policies name = each.value.name location = each.value.location resource_group_name = each.value.resource_group_name firewall_policy_sku = try(each.value.sku, "Standard") firewall_policy_auto_learn_private_ranges_enabled = try(each.value.auto_learn_private_ranges_enabled, null) firewall_policy_base_policy_id = try(each.value.base_policy_id, null) firewall_policy_dns = each.value.dns firewall_policy_threat_intelligence_mode = try(each.value.threat_intelligence_mode, "Alert") firewall_policy_private_ip_ranges = try(each.value.private_ip_ranges, null) firewall_policy_threat_intelligence_allowlist = try(each.value.threat_intelligence_allowlist, null) tags = try(each.value.tags, null) enable_telemetry = var.enable_telemetry } module "virtual_wan" { source = "Azure/avm-ptn-virtualwan/azurerm" version = "0.11.0" allow_branch_to_branch_traffic = try(var.virtual_wan_settings.allow_branch_to_branch_traffic, null) disable_vpn_encryption = try(var.virtual_wan_settings.disable_vpn_encryption, false) er_circuit_connections = try(var.virtual_wan_settings.er_circuit_connections, {}) expressroute_gateways = local.virtual_network_gateways_express_route firewalls = local.firewalls office365_local_breakout_category = try(var.virtual_wan_settings.office365_local_breakout_category, "None") location = var.virtual_wan_settings.location p2s_gateway_vpn_server_configurations = try(var.virtual_wan_settings.p2s_gateway_vpn_server_configurations, {}) p2s_gateways = try(var.virtual_wan_settings.p2s_gateways, {}) resource_group_name = var.virtual_wan_settings.resource_group_name create_resource_group = false virtual_hubs = local.virtual_hubs virtual_network_connections = local.virtual_network_connections virtual_wan_name = var.virtual_wan_settings.name type = try(var.virtual_wan_settings.type, "Standard") routing_intents = try(var.virtual_wan_settings.routing_intents, null) resource_group_tags = try(var.virtual_wan_settings.resource_group_tags, null) virtual_wan_tags = try(var.virtual_wan_settings.virtual_wan_tags, null) vpn_gateways = local.virtual_network_gateways_vpn vpn_site_connections = try(var.virtual_wan_settings.vpn_site_connections, {}) vpn_sites = try(var.virtual_wan_settings.vpn_sites, {}) tags = try(var.virtual_wan_settings.tags, null) enable_telemetry = var.enable_telemetry } module "virtual_network_side_car" { source = "Azure/avm-res-network-virtualnetwork/azurerm" version = "0.7.1" for_each = local.side_car_virtual_networks address_space = each.value.address_space location = each.value.location name = each.value.name resource_group_name = each.value.resource_group_name enable_telemetry = var.enable_telemetry tags = var.tags ddos_protection_plan = each.value.ddos_protection_plan subnets = local.subnets[each.key] } module "dns_resolver" { source = "Azure/avm-res-network-dnsresolver/azurerm" version = "0.4.0" for_each = local.private_dns_zones location = each.value.location name = each.value.private_dns_resolver.name resource_group_name = each.value.private_dns_resolver.resource_group_name == null ? local.virtual_hubs[each.key].resource_group : each.value.private_dns_resolver.resource_group_name virtual_network_resource_id = module.virtual_network_side_car[each.key].resource_id enable_telemetry = var.enable_telemetry tags = var.tags inbound_endpoints = { dns = { name = "dns" subnet_name = module.virtual_network_side_car[each.key].subnets["dns_resolver"].name } } } module "private_dns_zones" { source = "Azure/avm-ptn-network-private-link-private-dns-zones/azurerm" version = "0.7.1" for_each = local.private_dns_zones location = each.value.location resource_group_name = each.value.resource_group_name resource_group_creation_enabled = false virtual_network_resource_ids_to_link_to = local.private_dns_zones_virtual_network_links private_link_private_dns_zones = each.value.private_link_private_dns_zones == null ? (each.value.is_primary ? null : local.private_dns_zones_secondary_zones) : each.value.private_link_private_dns_zones enable_telemetry = var.enable_telemetry tags = var.tags } module "private_dns_zone_auto_registration" { source = "Azure/avm-res-network-privatednszone/azurerm" version = "0.2.2" for_each = local.private_dns_zones_auto_registration resource_group_name = each.value.resource_group_name domain_name = each.value.auto_registration_zone_name virtual_network_links = { auto_registration = { vnetlinkname = "vnet-link-${each.key}-auto-registration" vnetid = each.value.vnet_resource_id autoregistration = true tags = var.tags } } tags = var.tags enable_telemetry = var.enable_telemetry } module "ddos_protection_plan" { source = "Azure/avm-res-network-ddosprotectionplan/azurerm" version = "0.3.0" count = local.ddos_protection_plan_enabled ? 1 : 0 name = local.ddos_protection_plan.name resource_group_name = local.ddos_protection_plan.resource_group_name location = local.ddos_protection_plan.location enable_telemetry = var.enable_telemetry tags = var.tags } module "bastion_public_ip" { source = "Azure/avm-res-network-publicipaddress/azurerm" version = "0.2.0" for_each = local.bastion_host_public_ips name = try(each.value.name, "pip-bastion-${each.key}") resource_group_name = each.value.resource_group_name location = each.value.location allocation_method = try(each.value.allocation_method, "Static") ddos_protection_mode = try(each.value.ddos_protection_mode, "VirtualNetworkInherited") ddos_protection_plan_id = try(each.value.ddos_protection_plan_id, null) diagnostic_settings = try(each.value.diagnostic_settings, null) domain_name_label = try(each.value.domain_name_label, null) edge_zone = try(each.value.edge_zone, null) enable_telemetry = var.enable_telemetry idle_timeout_in_minutes = try(each.value.idle_timeout_in_minutes, 4) ip_tags = try(each.value.ip_tags, null) ip_version = try(each.value.ip_version, "IPv4") lock = try(each.value.lock, null) public_ip_prefix_id = try(each.value.public_ip_prefix_id, null) reverse_fqdn = try(each.value.reverse_fqdn, null) role_assignments = try(each.value.role_assignments, {}) sku = try(each.value.sku, "Standard") sku_tier = try(each.value.sku_tier, "Regional") tags = try(each.value.tags, var.tags) zones = try(each.value.zones, [1, 2, 3]) } module "bastion_host" { source = "Azure/avm-res-network-bastionhost/azurerm" version = "0.4.0" for_each = local.bastion_hosts name = try(each.value.name, "snap-bastion-${each.key}") resource_group_name = each.value.resource_group_name location = each.value.location copy_paste_enabled = try(each.value.copy_paste_enabled, false) diagnostic_settings = try(each.value.diagnostic_settings, null) enable_telemetry = var.enable_telemetry file_copy_enabled = try(each.value.file_copy_enabled, false) ip_configuration = each.value.ip_configuration ip_connect_enabled = try(each.value.ip_connect_enabled, false) kerberos_enabled = try(each.value.kerberos_enabled, false) lock = try(each.value.lock, null) role_assignments = try(each.value.role_assignments, {}) scale_units = try(each.value.scale_units, 2) shareable_link_enabled = try(each.value.shareable_link_enabled, false) sku = try(each.value.sku, "Standard") tags = try(each.value.tags, var.tags) tunneling_enabled = try(each.value.tunneling_enabled, false) virtual_network_id = try(each.value.virtual_network_id, null) }