workload/terraform/modules/network/main.tf (100 lines of code) (raw):
resource "azurerm_virtual_network" "vnet" {
name = "${var.vnet}-${substr(var.avdLocation, 0, 5)}-${var.prefix}-001"
address_space = var.vnet_range
location = azurerm_resource_group.net.location
resource_group_name = azurerm_resource_group.net.name
tags = local.tags
lifecycle { ignore_changes = [tags] }
depends_on = [azurerm_resource_group.net]
}
resource "azurerm_subnet" "subnet" {
name = "${var.snet}-${substr(var.avdLocation, 0, 5)}-${var.prefix}-001"
resource_group_name = "rg-avd-${substr(var.avdLocation, 0, 5)}-${var.prefix}-${var.rg_network}"
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = var.subnet_range
depends_on = [azurerm_resource_group.net]
}
resource "azurerm_subnet" "pesubnet" {
name = "${var.pesnet}-${substr(var.avdLocation, 0, 5)}-${var.prefix}-001"
resource_group_name = "rg-avd-${substr(var.avdLocation, 0, 5)}-${var.prefix}-${var.rg_network}"
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = var.pesubnet_range
private_endpoint_network_policies = "Enabled"
service_endpoints = ["Microsoft.Storage", "Microsoft.KeyVault"]
depends_on = [azurerm_resource_group.net]
}
resource "azurerm_subnet_network_security_group_association" "nsg_assoc" {
subnet_id = azurerm_subnet.subnet.id
network_security_group_id = azurerm_network_security_group.res-0.id
depends_on = [
azurerm_subnet.subnet
]
}
resource "azurerm_virtual_network_peering" "peer1" {
name = "peer_${var.prefix}_avdspoke_hub"
resource_group_name = azurerm_resource_group.net.name
virtual_network_name = azurerm_virtual_network.vnet.name
remote_virtual_network_id = data.azurerm_virtual_network.remote.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
allow_gateway_transit = false
provider = azurerm.spoke
depends_on = [
azurerm_virtual_network.vnet, azurerm_resource_group.net, azurerm_subnet.subnet
]
}
resource "azurerm_virtual_network_peering" "peer4" {
count = local.use_same_hub_identity_vnet ? 0 : 1
name = "peer_${var.prefix}_avdspoke_identity"
resource_group_name = azurerm_resource_group.net.name
virtual_network_name = azurerm_virtual_network.vnet.name
remote_virtual_network_id = data.azurerm_virtual_network.identity.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
allow_gateway_transit = true
use_remote_gateways = false
provider = azurerm.spoke
depends_on = [
azurerm_virtual_network_peering.peer1
]
}
resource "azurerm_virtual_network_peering" "peer2" {
name = "peer_${var.prefix}_hub_avdspoke"
resource_group_name = var.hub_connectivity_rg
virtual_network_name = var.hub_vnet
remote_virtual_network_id = azurerm_virtual_network.vnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
allow_gateway_transit = true
use_remote_gateways = false
provider = azurerm.hub
depends_on = [
azurerm_virtual_network_peering.peer1
]
}
resource "azurerm_virtual_network_peering" "peer3" {
count = local.use_same_hub_identity_vnet ? 0 : 1
name = "peer_${var.prefix}_identity_avdspoke"
resource_group_name = var.identity_rg
virtual_network_name = var.identity_vnet
remote_virtual_network_id = azurerm_virtual_network.vnet.id
allow_virtual_network_access = true
allow_forwarded_traffic = true
allow_gateway_transit = true
use_remote_gateways = false
provider = azurerm.identity
depends_on = [
azurerm_virtual_network_peering.peer2
]
}
# optional - Creates the Azure Virtual Desktop Firewall Rules assuming you have a firewall in the hub
/*
module "firewall" {
source = "./firewallrules"
avdLocation = var.avdLocation
prefix = var.prefix
fw_policy = var.fw_policy
hub_subscription_id = var.hub_subscription_id
hub_connectivity_rg = var.hub_connectivity_rg
hub_vnet = var.hub_vnet
}
*/