BrownField/Networking/AVS-to-VNet-NewVNet/Terraform/main.tf (68 lines of code) (raw):
provider "azurerm" {
alias = "AVS-to-VNet-NewVnet"
partner_id = "938cd838-e22a-47da-8a6f-bdda923e3edb"
features {}
}
resource "azurerm_resource_group" "deploymentRG" {
provider = azurerm.AVS-to-VNet-NewVnet
name = var.DeploymentResourceGroupName
location = var.Location
}
resource "azurerm_virtual_network" "vnetGatewayVnet" {
provider = azurerm.AVS-to-VNet-NewVnet
name = var.VNetName
location = azurerm_resource_group.deploymentRG.location
resource_group_name = azurerm_resource_group.deploymentRG.name
address_space = var.VNetAddressSpaceCIDR
}
resource "azurerm_subnet" "gatewaySubnet" {
provider = azurerm.AVS-to-VNet-NewVnet
name = "GatewaySubnet"
resource_group_name = azurerm_resource_group.deploymentRG.name
virtual_network_name = azurerm_virtual_network.vnetGatewayVnet.name
address_prefixes = var.VNetGatewaySubnetCIDR
}
resource "azurerm_public_ip" "gatewayIP" {
provider = azurerm.AVS-to-VNet-NewVnet
name = "${var.GatewayName}-PIP"
resource_group_name = azurerm_resource_group.deploymentRG.name
location = azurerm_resource_group.deploymentRG.location
allocation_method = "Dynamic"
sku = "Basic"
sku_tier = "Regional"
}
resource "azurerm_virtual_network_gateway" "ERGateway" {
provider = azurerm.AVS-to-VNet-NewVnet
name = var.GatewayName
location = azurerm_resource_group.deploymentRG.location
resource_group_name = azurerm_resource_group.deploymentRG.name
type = "ExpressRoute"
sku = var.GatewaySku
ip_configuration {
name = "vnetGatewayConfig"
public_ip_address_id = azurerm_public_ip.gatewayIP.id
private_ip_address_allocation = "Dynamic"
subnet_id = azurerm_subnet.gatewaySubnet.id
}
}
#assumes the same subscription (need to reference different provider blocks if a separate sub is required.
data "azurerm_vmware_private_cloud" "existing" {
provider = azurerm.AVS-to-VNet-NewVnet
name = var.PrivateCloudName
resource_group_name = var.PrivateCloudResourceGroup
}
#check this is the proper way to name the authorization
resource "azurerm_vmware_express_route_authorization" "thisVnet" {
provider = azurerm.AVS-to-VNet-NewVnet
name = azurerm_virtual_network.vnetGatewayVnet.name
private_cloud_id = data.azurerm_vmware_private_cloud.existing.id
}
resource "azurerm_virtual_network_gateway_connection" "expressRoute" {
provider = azurerm.AVS-to-VNet-NewVnet
name = var.PrivateCloudName
location = azurerm_resource_group.deploymentRG.location
resource_group_name = azurerm_resource_group.deploymentRG.name
type = "ExpressRoute"
virtual_network_gateway_id = azurerm_virtual_network_gateway.ERGateway.id
express_route_circuit_id = data.azurerm_vmware_private_cloud.existing.circuit[0].express_route_id
authorization_key = azurerm_vmware_express_route_authorization.thisVnet.express_route_authorization_key
routing_weight = 0
}