network.tf (36 lines of code) (raw):

# Virtual network connection from virtual hub # Create a hub connection module "virtual_network_connections" { source = "./modules/vnet-conn" virtual_network_connections = { for key, vnet_conn in var.virtual_network_connections : key => { name = vnet_conn.name virtual_hub_id = module.virtual_hubs.resource_id[vnet_conn.virtual_hub_key] remote_virtual_network_id = vnet_conn.remote_virtual_network_id internet_security_enabled = lookup(vnet_conn, "internet_security_enabled", false) routing = lookup(vnet_conn, "routing", null) == null ? null : { associated_route_table_id = vnet_conn.routing.associated_route_table_id propagated_route_table = lookup(vnet_conn.routing, "propagated_route_table", null) == null ? null : { route_table_ids = lookup(vnet_conn.routing.propagated_route_table, "route_table_ids", []) labels = lookup(vnet_conn.routing.propagated_route_table, "labels", []) } static_vnet_route = lookup(vnet_conn.routing, "static_vnet_route", null) == null ? null : { name = lookup(vnet_conn.routing.static_vnet_route, "name", null) address_prefixes = lookup(vnet_conn.routing.static_vnet_route, "address_prefixes", []) next_hop_ip_address = lookup(vnet_conn.routing.static_vnet_route, "next_hop_ip_address", null) } } } } } # Routing intent resource "azurerm_virtual_hub_routing_intent" "routing_intent" { for_each = local.routing_intents != null ? local.routing_intents : {} name = each.value.name virtual_hub_id = module.virtual_hubs.resource_object[each.value.virtual_hub_key].id dynamic "routing_policy" { for_each = each.value.routing_policies content { destinations = routing_policy.value.destinations name = routing_policy.value.name next_hop = module.firewalls.resource_object[routing_policy.value.next_hop_firewall_key].id } } }