Skip to content

Instantly share code, notes, and snippets.

@isjwuk
Created March 24, 2026 15:06
Show Gist options
  • Select an option

  • Save isjwuk/49308d9dc76c1b30306150ca2fbbe1c2 to your computer and use it in GitHub Desktop.

Select an option

Save isjwuk/49308d9dc76c1b30306150ca2fbbe1c2 to your computer and use it in GitHub Desktop.
Terraform to create 2 peered VNETs for a demo
###################### Resource Group ###################################################
# Create resource group
resource "azurerm_resource_group" "rg-routetest" {
name = "rg-vnet-extend-demo"
location = var.location
tags = var.tags
}
###################### VNET-1 ###################################################
# Create a VNET
module "vnet-1" {
source = "Azure/avm-res-network-virtualnetwork/azurerm"
version = "0.17.1"
name = "vnet-1"
enable_telemetry = var.enable_telemetry
parent_id = azurerm_resource_group.rg-routetest.id
location = azurerm_resource_group.rg-routetest.location
address_space = ["10.1.0.0/16"]
tags = var.tags
subnets = {
subnet1 = {
name = "snet-vnet-1-a"
address_prefixes = ["10.1.0.0/17"]
}
subnet2 = {
name = "snet-vnet-1-b"
address_prefixes = ["10.1.128.0/17"]
}
}
peerings = {
hub = {
name = "vnet-1-to-vnet-2"
allow_forwarded_traffic = true
allow_gateway_transit = false
allow_virtual_network_access = true
use_remote_gateways = false
create_reverse_peering = true
remote_virtual_network_resource_id = module.vnet-2.resource_id
reverse_name = "vnet-2-to-vnet-1"
reverse_allow_forwarded_traffic = true
reverse_allow_gateway_transit = false
reverse_allow_virtual_network_access = true
reverse_use_remote_gateways = false
}
}
}
###################### VNET-2 ###################################################
# Create a Second VNET
module "vnet-2" {
source = "Azure/avm-res-network-virtualnetwork/azurerm"
version = "0.17.1"
name = "vnet-2"
enable_telemetry = var.enable_telemetry
parent_id = azurerm_resource_group.rg-routetest.id
location = azurerm_resource_group.rg-routetest.location
address_space = ["10.2.0.0/16"]
tags = var.tags
subnets = {
subnet1 = {
name = "snet-vnet-2-a"
address_prefixes = ["10.2.0.0/17"]
}
subnet2 = {
name = "snet-vnet-2-b"
address_prefixes = ["10.2.128.0/17"]
}
}
}
###################### Tags ###################################################
variable "tags" {
type = object({
Environment = string
Service = string
})
description = "tags to identify your app in Azure"
default = {
Environment = "Dev"
Service = "vnet-extend-demo"
}
}
############ Other Variables ###################################################
variable "location" {
type = string
description = "Set where you want the resources to be hosted"
default = "uksouth"
}
variable "enable_telemetry" {
type = bool
description = "Enable telemetry for the modules"
default = false
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment