1.Virtual.Network/VPN/gateway.tf (51 lines of code) (raw):
###############################################################################################################
# Virtual Network Gateway (VPN) (https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpngateways) #
###############################################################################################################
variable vpnGateway {
type = object({
name = string
type = string
vpnType = string
generation = string
sharedKey = string
enableBgp = bool
pointToSiteClient = object({
addressSpace = list(string)
rootCertificate = object({
name = string
data = string
})
})
})
}
resource azurerm_virtual_network_gateway vpn {
name = var.vpnGateway.name
resource_group_name = data.azurerm_virtual_network.studio.resource_group_name
location = data.azurerm_virtual_network.studio.location
type = "Vpn"
sku = var.vpnGateway.type
vpn_type = var.vpnGateway.vpnType
generation = var.vpnGateway.generation
enable_bgp = var.vpnGateway.enableBgp
active_active = var.virtualNetwork.gateway.ipAddress2.name != ""
ip_configuration {
name = "ipConfig1"
subnet_id = data.azurerm_subnet.gateway.id
public_ip_address_id = data.azurerm_public_ip.gateway1.id
}
dynamic ip_configuration {
for_each = var.virtualNetwork.gateway.ipAddress2.name != "" ? [1] : []
content {
name = "ipConfig2"
subnet_id = data.azurerm_subnet.gateway.id
public_ip_address_id = data.azurerm_public_ip.gateway2[0].id
}
}
dynamic vpn_client_configuration {
for_each = length(var.vpnGateway.pointToSiteClient.addressSpace) > 0 ? [1] : []
content {
address_space = var.vpnGateway.pointToSiteClient.addressSpace
root_certificate {
name = var.vpnGateway.pointToSiteClient.rootCertificate.name
public_cert_data = var.vpnGateway.pointToSiteClient.rootCertificate.data
}
}
}
}