quickstart/101-azure-expressroute/main.tf (69 lines of code) (raw):
# Create Resource Group
resource "random_pet" "rg_name" {
prefix = var.resource_group_name_prefix
}
resource "azurerm_resource_group" "rg" {
location = var.resource_group_location
name = random_pet.rg_name.id
}
# Random String for unique naming
resource "random_string" "name" {
length = 8
special = false
upper = false
lower = true
numeric = false
}
# Create Virtual Network
resource "azurerm_virtual_network" "vnet" {
name = "vnet-${random_string.name.result}"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}
# Create Subnet for Gateway
resource "azurerm_subnet" "gateway_subnet" {
name = "GatewaySubnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.0.0/24"]
}
# Create Public IP for Gateway
resource "azurerm_public_ip" "gateway_ip" {
name = "pip-${random_string.name.result}"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
allocation_method = "Static"
sku = "Standard"
}
# Create ExpressRoute Gateway
resource "azurerm_virtual_network_gateway" "gateway" {
name = "gateway-${random_string.name.result}"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
type = "ExpressRoute"
vpn_type = "RouteBased"
active_active = false
enable_bgp = false
sku = "HighPerformance"
ip_configuration {
name = "vnetGatewayConfig"
public_ip_address_id = azurerm_public_ip.gateway_ip.id
subnet_id = azurerm_subnet.gateway_subnet.id
}
}
# Create ExpressRoute Circuit
resource "azurerm_express_route_circuit" "circuit" {
name = "erc-${random_string.name.result}"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
service_provider_name = "Equinix"
peering_location = "Washington DC"
bandwidth_in_mbps = 50
sku {
tier = "Standard"
family = "MeteredData"
}
}
# Create ExpressRoute Circuit Peering
resource "azurerm_express_route_circuit_peering" "private" {
peering_type = "AzurePrivatePeering"
express_route_circuit_name = azurerm_express_route_circuit.circuit.name
resource_group_name = azurerm_resource_group.rg.name
primary_peer_address_prefix = "192.168.10.16/30"
secondary_peer_address_prefix = "192.168.10.20/30"
vlan_id = 200
peer_asn = 65001 # Provide a valid private ASN here
}