1+ locals {
2+ spoke2-location = " eastus"
3+ spoke2-resource-group = " spoke2-vnet-rg"
4+ prefix-spoke2 = " spoke2"
5+ }
6+
7+ resource "azurerm_resource_group" "spoke2-vnet-rg" {
8+ name = local. spoke2-resource-group
9+ location = local. spoke2-location
10+ }
11+
12+ resource "azurerm_virtual_network" "spoke2-vnet" {
13+ name = " ${ local . prefix-spoke2 } -vnet"
14+ location = azurerm_resource_group. spoke2-vnet-rg . location
15+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
16+ address_space = [" 10.2.0.0/16" ]
17+
18+ tags = {
19+ environment = local.prefix- spoke2
20+ }
21+ }
22+
23+ resource "azurerm_subnet" "spoke2-mgmt" {
24+ name = " mgmt"
25+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
26+ virtual_network_name = azurerm_virtual_network. spoke2-vnet . name
27+ address_prefixes = [" 10.2.0.64/27" ]
28+ }
29+
30+ resource "azurerm_subnet" "spoke2-workload" {
31+ name = " workload"
32+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
33+ virtual_network_name = azurerm_virtual_network. spoke2-vnet . name
34+ address_prefixes = [" 10.2.1.0/24" ]
35+ }
36+
37+ resource "azurerm_virtual_network_peering" "spoke2-hub-peer" {
38+ name = " ${ local . prefix-spoke2 } -hub-peer"
39+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
40+ virtual_network_name = azurerm_virtual_network. spoke2-vnet . name
41+ remote_virtual_network_id = azurerm_virtual_network. hub-vnet . id
42+
43+ allow_virtual_network_access = true
44+ allow_forwarded_traffic = true
45+ allow_gateway_transit = false
46+ use_remote_gateways = true
47+ depends_on = [azurerm_virtual_network . spoke2-vnet , azurerm_virtual_network . hub-vnet , azurerm_virtual_network_gateway . hub-vnet-gateway ]
48+ }
49+
50+ resource "azurerm_network_interface" "spoke2-nic" {
51+ name = " ${ local . prefix-spoke2 } -nic"
52+ location = azurerm_resource_group. spoke2-vnet-rg . location
53+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
54+ enable_ip_forwarding = true
55+
56+ ip_configuration {
57+ name = local. prefix-spoke2
58+ subnet_id = azurerm_subnet. spoke2-mgmt . id
59+ private_ip_address_allocation = " Dynamic"
60+ }
61+
62+ tags = {
63+ environment = local.prefix- spoke2
64+ }
65+ }
66+
67+ resource "azurerm_virtual_machine" "spoke2-vm" {
68+ name = " ${ local . prefix-spoke2 } -vm"
69+ location = azurerm_resource_group. spoke2-vnet-rg . location
70+ resource_group_name = azurerm_resource_group. spoke2-vnet-rg . name
71+ network_interface_ids = [azurerm_network_interface . spoke2-nic . id ]
72+ vm_size = var. vmsize
73+
74+ storage_image_reference {
75+ publisher = " Canonical"
76+ offer = " UbuntuServer"
77+ sku = " 16.04-LTS"
78+ version = " latest"
79+ }
80+
81+ storage_os_disk {
82+ name = " myosdisk1"
83+ caching = " ReadWrite"
84+ create_option = " FromImage"
85+ managed_disk_type = " Standard_LRS"
86+ }
87+
88+ os_profile {
89+ computer_name = " ${ local . prefix-spoke2 } -vm"
90+ admin_username = var. username
91+ admin_password = var. password
92+ }
93+
94+ os_profile_linux_config {
95+ disable_password_authentication = false
96+ }
97+
98+ tags = {
99+ environment = local.prefix- spoke2
100+ }
101+ }
102+
103+ resource "azurerm_virtual_network_peering" "hub-spoke2-peer" {
104+ name = " hub-spoke2-peer"
105+ resource_group_name = azurerm_resource_group. hub-vnet-rg . name
106+ virtual_network_name = azurerm_virtual_network. hub-vnet . name
107+ remote_virtual_network_id = azurerm_virtual_network. spoke2-vnet . id
108+ allow_virtual_network_access = true
109+ allow_forwarded_traffic = true
110+ allow_gateway_transit = true
111+ use_remote_gateways = false
112+ depends_on = [azurerm_virtual_network . spoke2-vnet , azurerm_virtual_network . hub-vnet , azurerm_virtual_network_gateway . hub-vnet-gateway ]
113+ }
0 commit comments