locals.tf (154 lines of code) (raw):

locals { azurerm_express_route_circuit_peering = nonsensitive(sensitive(local.express_route_circuit_peerings)) azurerm_express_route_circuit_peering_sensitive = local.express_route_circuit_peerings azurerm_local_network_gateway = { for local_network_gateway_key, local_network_gateway in var.local_network_gateways : local_network_gateway_key => local_network_gateway if local_network_gateway.id == null } azurerm_public_ip = { for ip_configuration_key, ip_configuration in local.ip_configurations : ip_configuration_key => { name = ip_configuration.public_ip.name resource_group_name = coalesce(ip_configuration.public_ip.resource_group_name, local.virtual_network_resource_group_name) allocation_method = ip_configuration.public_ip.allocation_method sku = ip_configuration.public_ip.sku tags = ip_configuration.public_ip.tags zones = ip_configuration.public_ip.zones edge_zone = ip_configuration.public_ip.edge_zone ddos_protection_mode = ip_configuration.public_ip.ddos_protection_mode ddos_protection_plan_id = ip_configuration.public_ip.ddos_protection_plan_id domain_name_label = ip_configuration.public_ip.domain_name_label idle_timeout_in_minutes = ip_configuration.public_ip.idle_timeout_in_minutes ip_tags = ip_configuration.public_ip.ip_tags ip_version = ip_configuration.public_ip.ip_version public_ip_prefix_id = ip_configuration.public_ip.public_ip_prefix_id reverse_fqdn = ip_configuration.public_ip.reverse_fqdn sku_tier = ip_configuration.public_ip.sku_tier } if ip_configuration.public_ip.creation_enabled == true } azurerm_virtual_network_gateway = { bgp_settings = { asn = try(var.vpn_bgp_settings.asn, 65515) peer_weight = try(var.vpn_bgp_settings.peer_weight, null) peering_addresses = { for ip_configuration_key, ip_configuration in local.ip_configurations : ip_configuration_key => { ip_configuration_name = ip_configuration.name apipa_addresses = ip_configuration.apipa_addresses } if ip_configuration.apipa_addresses != null } } ip_configuration = { for ip_configuration_key, ip_configuration in local.ip_configurations : ip_configuration_key => { name = ip_configuration.name public_ip_address_id = try(azurerm_public_ip.vgw[ip_configuration_key].id, ip_configuration.public_ip.id) subnet_id = try(azurerm_subnet.vgw[0].id, local.subnet_id) private_ip_address_allocation = ip_configuration.private_ip_address_allocation } } } azurerm_virtual_network_gateway_connection = nonsensitive(sensitive(merge( local.local_network_gateway_virtual_network_gateway_connections, local.express_route_circuit_virtual_network_gateway_connections ))) azurerm_virtual_network_gateway_connection_sensitive = merge( local.local_network_gateway_virtual_network_gateway_connections, local.express_route_circuit_virtual_network_gateway_connections ) } locals { subnet_id = join("/", [ var.virtual_network_id, "subnets", "GatewaySubnet" ]) virtual_network_name = basename(var.virtual_network_id) virtual_network_resource_group_name = split("/", var.virtual_network_id)[4] } locals { default_ip_configuration = { name = null apipa_addresses = null private_ip_address_allocation = "Dynamic" public_ip = { creation_enabled = true resource_group_name = null id = null name = null allocation_method = "Static" sku = "Standard" tags = null zones = [1, 2, 3] edge_zone = null ddos_protection_mode = "VirtualNetworkInherited" ddos_protection_plan_id = null domain_name_label = null idle_timeout_in_minutes = null ip_tags = {} ip_version = "IPv4" public_ip_prefix_id = null reverse_fqdn = null sku_tier = "Regional" } } ip_configurations = { for ip_configuration_key, ip_configuration in( length(var.ip_configurations) == 0 ? ( var.vpn_active_active_enabled && var.type == "Vpn" ? { "001" = local.default_ip_configuration "002" = local.default_ip_configuration } : { "001" = local.default_ip_configuration } ) : var.ip_configurations ) : ip_configuration_key => merge( ip_configuration, { name = coalesce(ip_configuration.name, "vnetGatewayConfig${ip_configuration_key}") public_ip = merge( ip_configuration.public_ip, { name = coalesce(ip_configuration.public_ip.name, "pip-${var.name}-${ip_configuration_key}") } ) } ) } } locals { express_route_circuit_virtual_network_gateway_connections = { for express_route_circuit_key, express_route_circuit in var.express_route_circuits : "erc-${express_route_circuit_key}" => merge( express_route_circuit.connection, { type = "ExpressRoute" express_route_circuit_id = express_route_circuit.id } ) if express_route_circuit.connection != null } local_network_gateway_virtual_network_gateway_connections = { for local_network_gateway_key, local_network_gateway in var.local_network_gateways : "lgw-${local_network_gateway_key}" => merge( local_network_gateway.connection, { local_network_gateway_id = local_network_gateway.id } ) if local_network_gateway.connection != null } } locals { express_route_circuit_peerings = { for express_route_circuit_key, express_route_circuit in var.express_route_circuits : express_route_circuit_key => merge( express_route_circuit.peering, { express_route_circuit_name = basename(express_route_circuit.id) } ) if express_route_circuit.peering != null } }