Skip to content

Commit 20d7d8d

Browse files
committed
301-hub-spoke - Added hub-vnet.tf
1 parent 54e5c9f commit 20d7d8d

File tree

1 file changed

+153
-0
lines changed

1 file changed

+153
-0
lines changed
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
locals {
2+
prefix-hub = "hub"
3+
hub-location = "eastus"
4+
hub-resource-group = "hub-vnet-rg"
5+
shared-key = "4-v3ry-53cr37-1p53c-5h4r3d-k3y"
6+
}
7+
8+
resource "azurerm_resource_group" "hub-vnet-rg" {
9+
name = local.hub-resource-group
10+
location = local.hub-location
11+
}
12+
13+
resource "azurerm_virtual_network" "hub-vnet" {
14+
name = "${local.prefix-hub}-vnet"
15+
location = azurerm_resource_group.hub-vnet-rg.location
16+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
17+
address_space = ["10.0.0.0/16"]
18+
19+
tags = {
20+
environment = "hub-spoke"
21+
}
22+
}
23+
24+
resource "azurerm_subnet" "hub-gateway-subnet" {
25+
name = "GatewaySubnet"
26+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
27+
virtual_network_name = azurerm_virtual_network.hub-vnet.name
28+
address_prefixes = ["10.0.255.224/27"]
29+
}
30+
31+
resource "azurerm_subnet" "hub-mgmt" {
32+
name = "mgmt"
33+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
34+
virtual_network_name = azurerm_virtual_network.hub-vnet.name
35+
address_prefixes = ["10.0.0.64/27"]
36+
}
37+
38+
resource "azurerm_subnet" "hub-dmz" {
39+
name = "dmz"
40+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
41+
virtual_network_name = azurerm_virtual_network.hub-vnet.name
42+
address_prefixes = ["10.0.0.32/27"]
43+
}
44+
45+
resource "azurerm_network_interface" "hub-nic" {
46+
name = "${local.prefix-hub}-nic"
47+
location = azurerm_resource_group.hub-vnet-rg.location
48+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
49+
enable_ip_forwarding = true
50+
51+
ip_configuration {
52+
name = local.prefix-hub
53+
subnet_id = azurerm_subnet.hub-mgmt.id
54+
private_ip_address_allocation = "Dynamic"
55+
}
56+
57+
tags = {
58+
environment = local.prefix-hub
59+
}
60+
}
61+
62+
#Virtual Machine
63+
resource "azurerm_virtual_machine" "hub-vm" {
64+
name = "${local.prefix-hub}-vm"
65+
location = azurerm_resource_group.hub-vnet-rg.location
66+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
67+
network_interface_ids = [azurerm_network_interface.hub-nic.id]
68+
vm_size = var.vmsize
69+
70+
storage_image_reference {
71+
publisher = "Canonical"
72+
offer = "UbuntuServer"
73+
sku = "16.04-LTS"
74+
version = "latest"
75+
}
76+
77+
storage_os_disk {
78+
name = "myosdisk1"
79+
caching = "ReadWrite"
80+
create_option = "FromImage"
81+
managed_disk_type = "Standard_LRS"
82+
}
83+
84+
os_profile {
85+
computer_name = "${local.prefix-hub}-vm"
86+
admin_username = var.username
87+
admin_password = var.password
88+
}
89+
90+
os_profile_linux_config {
91+
disable_password_authentication = false
92+
}
93+
94+
tags = {
95+
environment = local.prefix-hub
96+
}
97+
}
98+
99+
# Virtual Network Gateway
100+
resource "azurerm_public_ip" "hub-vpn-gateway1-pip" {
101+
name = "hub-vpn-gateway1-pip"
102+
location = azurerm_resource_group.hub-vnet-rg.location
103+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
104+
105+
allocation_method = "Dynamic"
106+
}
107+
108+
resource "azurerm_virtual_network_gateway" "hub-vnet-gateway" {
109+
name = "hub-vpn-gateway1"
110+
location = azurerm_resource_group.hub-vnet-rg.location
111+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
112+
113+
type = "Vpn"
114+
vpn_type = "RouteBased"
115+
116+
active_active = false
117+
enable_bgp = false
118+
sku = "VpnGw1"
119+
120+
ip_configuration {
121+
name = "vnetGatewayConfig"
122+
public_ip_address_id = azurerm_public_ip.hub-vpn-gateway1-pip.id
123+
private_ip_address_allocation = "Dynamic"
124+
subnet_id = azurerm_subnet.hub-gateway-subnet.id
125+
}
126+
depends_on = [azurerm_public_ip.hub-vpn-gateway1-pip]
127+
}
128+
129+
resource "azurerm_virtual_network_gateway_connection" "hub-onprem-conn" {
130+
name = "hub-onprem-conn"
131+
location = azurerm_resource_group.hub-vnet-rg.location
132+
resource_group_name = azurerm_resource_group.hub-vnet-rg.name
133+
134+
type = "Vnet2Vnet"
135+
routing_weight = 1
136+
137+
virtual_network_gateway_id = azurerm_virtual_network_gateway.hub-vnet-gateway.id
138+
peer_virtual_network_gateway_id = azurerm_virtual_network_gateway.onprem-vpn-gateway.id
139+
140+
shared_key = local.shared-key
141+
}
142+
143+
resource "azurerm_virtual_network_gateway_connection" "onprem-hub-conn" {
144+
name = "onprem-hub-conn"
145+
location = azurerm_resource_group.onprem-vnet-rg.location
146+
resource_group_name = azurerm_resource_group.onprem-vnet-rg.name
147+
type = "Vnet2Vnet"
148+
routing_weight = 1
149+
virtual_network_gateway_id = azurerm_virtual_network_gateway.onprem-vpn-gateway.id
150+
peer_virtual_network_gateway_id = azurerm_virtual_network_gateway.hub-vnet-gateway.id
151+
152+
shared_key = local.shared-key
153+
}

0 commit comments

Comments
 (0)