demo_solution/modules/repo_terraform.azurerm.virtual_gtw/main.tf (87 lines of code) (raw):

# Get subnet to associate with Azure firewall data "azurerm_subnet" "subnet" { name = lookup(var.ip_configuration, "subnet_name", "GatewaySubnet") virtual_network_name = var.ip_configuration.vnet_name resource_group_name = lookup(var.ip_configuration, "vnet_rg_name", var.resource_group_name) } data "azurerm_subnet" "active_active_subnet" { count = var.active_active == true ? 1 : 0 name = lookup(var.active_active_ip_configurations, "subnet_name", "GatewaySubnet") virtual_network_name = var.active_active_ip_configurations.vnet_name resource_group_name = lookup(var.active_active_ip_configurations, "vnet_rg_name", var.resource_group_name) } # Get public IP data data "azurerm_public_ip" "public_ip" { name = lookup(var.ip_configuration, "public_ip_name") resource_group_name = lookup(var.ip_configuration, "public_ip_rg_name") } data "azurerm_public_ip" "active_active_public_ip" { count = var.active_active == true ? 1 : 0 name = lookup(var.active_active_ip_configurations, "public_ip_name") resource_group_name = lookup(var.active_active_ip_configurations, "public_ip_rg_name") } # Get resource group data data "azurerm_resource_group" "rg" { name = var.resource_group_name } # Create Azure virtual network gateway resource "azurerm_virtual_network_gateway" "virtual_gateway" { name = var.name location = var.location == null ? data.azurerm_resource_group.rg.location : var.location resource_group_name = var.resource_group_name type = var.type vpn_type = var.vpn_type active_active = var.active_active enable_bgp = var.enable_bgp sku = var.sku generation = var.generation tags = var.tags ip_configuration { name = lookup(var.ip_configuration, "name", "default-config") public_ip_address_id = data.azurerm_public_ip.public_ip.id private_ip_address_allocation = lookup(var.ip_configuration, "private_ip_address_allocation", "Dynamic") subnet_id = data.azurerm_subnet.subnet.id } dynamic "ip_configuration" { for_each = var.active_active == true ? [1] : [] content { name = lookup(var.active_active_ip_configurations, "name", "active-active-config") public_ip_address_id = data.azurerm_public_ip.active_active_public_ip[0].id private_ip_address_allocation = lookup(var.active_active_ip_configurations, "private_ip_address_allocation", "Dynamic") subnet_id = data.azurerm_subnet.active_active_subnet[0].id } } } resource "azurerm_virtual_network_gateway_connection" "connection" { count = var.connection != null ? 1 : 0 name = lookup(var.connection, "name", "Null") location = var.location == null ? data.azurerm_resource_group.rg.location : var.location resource_group_name = var.resource_group_name virtual_network_gateway_id = azurerm_virtual_network_gateway.virtual_gateway.id express_route_circuit_id = lookup(var.connection, "express_route_circuit_id", null) peer_virtual_network_gateway_id = lookup(var.connection, "peer_network_gateway_id", null) local_network_gateway_id = try(azurerm_local_network_gateway.onprem[0].id, lookup(var.connection, "local_network_gateway_id", null)) type = lookup(var.connection, "type", "IPsec") authorization_key = lookup(var.connection, "express_route_key", null) shared_key = lookup(var.connection, "ipsec_key", null) dpd_timeout_seconds = lookup(var.connection, "dpd_timeout_seconds", 0) express_route_gateway_bypass = lookup(var.connection, "express_route_gateway_bypass", false) connection_mode = lookup(var.connection, "connection_mode", "Default") enable_bgp = lookup(var.connection, "enable_bgp", false) routing_weight = lookup(var.connection, "routing_weight", 0) tags = var.tags } resource "azurerm_local_network_gateway" "onprem" { count = var.local_network_gateway != null ? 1 : 0 name = lookup(var.local_network_gateway, "name") resource_group_name = var.resource_group_name location = lookup(var.local_network_gateway, "location", azurerm_virtual_network_gateway.virtual_gateway.location) gateway_address = lookup(var.local_network_gateway, "gateway_address", null) address_space = lookup(var.local_network_gateway, "address_space", null) gateway_fqdn = lookup(var.local_network_gateway, "gateway_fqdn", null) dynamic "bgp_settings" { for_each = lookup(var.local_network_gateway, "bgp_settings", null) != null ? [lookup(var.local_network_gateway, "bgp_settings")] : [] content { asn = bgp_settings.value.asn bgp_peering_address = bgp_settings.value.bgp_peering_address peer_weight = lookup(bgp_settings.value, "peer_weight", null) } } tags = var.tags }