1+ locals {
2+ onprem-location = " eastus"
3+ onprem-resource-group = " onprem-vnet-rg"
4+ prefix-onprem = " onprem"
5+ }
6+
7+ resource "azurerm_resource_group" "onprem-vnet-rg" {
8+ name = local. onprem-resource-group
9+ location = local. onprem-location
10+ }
11+
12+ resource "azurerm_virtual_network" "onprem-vnet" {
13+ name = " onprem-vnet"
14+ location = azurerm_resource_group. onprem-vnet-rg . location
15+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
16+ address_space = [" 192.168.0.0/16" ]
17+
18+ tags = {
19+ environment = local.prefix- onprem
20+ }
21+ }
22+
23+ resource "azurerm_subnet" "onprem-gateway-subnet" {
24+ name = " GatewaySubnet"
25+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
26+ virtual_network_name = azurerm_virtual_network. onprem-vnet . name
27+ address_prefixes = [" 192.168.255.224/27" ]
28+ }
29+
30+ resource "azurerm_subnet" "onprem-mgmt" {
31+ name = " mgmt"
32+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
33+ virtual_network_name = azurerm_virtual_network. onprem-vnet . name
34+ address_prefixes = [" 192.168.1.128/25" ]
35+ }
36+
37+ resource "azurerm_public_ip" "onprem-pip" {
38+ name = " ${ local . prefix-onprem } -pip"
39+ location = azurerm_resource_group. onprem-vnet-rg . location
40+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
41+ allocation_method = " Dynamic"
42+
43+ tags = {
44+ environment = local.prefix- onprem
45+ }
46+ }
47+
48+ resource "azurerm_network_interface" "onprem-nic" {
49+ name = " ${ local . prefix-onprem } -nic"
50+ location = azurerm_resource_group. onprem-vnet-rg . location
51+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
52+ enable_ip_forwarding = true
53+
54+ ip_configuration {
55+ name = local. prefix-onprem
56+ subnet_id = azurerm_subnet. onprem-mgmt . id
57+ private_ip_address_allocation = " Dynamic"
58+ public_ip_address_id = azurerm_public_ip. onprem-pip . id
59+ }
60+ }
61+
62+ # Create Network Security Group and rule
63+ resource "azurerm_network_security_group" "onprem-nsg" {
64+ name = " ${ local . prefix-onprem } -nsg"
65+ location = azurerm_resource_group. onprem-vnet-rg . location
66+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
67+
68+ security_rule {
69+ name = " SSH"
70+ priority = 1001
71+ direction = " Inbound"
72+ access = " Allow"
73+ protocol = " Tcp"
74+ source_port_range = " *"
75+ destination_port_range = " 22"
76+ source_address_prefix = " *"
77+ destination_address_prefix = " *"
78+ }
79+
80+ tags = {
81+ environment = " onprem"
82+ }
83+ }
84+
85+ resource "azurerm_subnet_network_security_group_association" "mgmt-nsg-association" {
86+ subnet_id = azurerm_subnet. onprem-mgmt . id
87+ network_security_group_id = azurerm_network_security_group. onprem-nsg . id
88+ }
89+
90+ resource "azurerm_virtual_machine" "onprem-vm" {
91+ name = " ${ local . prefix-onprem } -vm"
92+ location = azurerm_resource_group. onprem-vnet-rg . location
93+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
94+ network_interface_ids = [azurerm_network_interface . onprem-nic . id ]
95+ vm_size = var. vmsize
96+
97+ storage_image_reference {
98+ publisher = " Canonical"
99+ offer = " UbuntuServer"
100+ sku = " 16.04-LTS"
101+ version = " latest"
102+ }
103+
104+ storage_os_disk {
105+ name = " myosdisk1"
106+ caching = " ReadWrite"
107+ create_option = " FromImage"
108+ managed_disk_type = " Standard_LRS"
109+ }
110+
111+ os_profile {
112+ computer_name = " ${ local . prefix-onprem } -vm"
113+ admin_username = var. username
114+ admin_password = var. password
115+ }
116+
117+ os_profile_linux_config {
118+ disable_password_authentication = false
119+ }
120+
121+ tags = {
122+ environment = local.prefix- onprem
123+ }
124+ }
125+
126+ resource "azurerm_public_ip" "onprem-vpn-gateway1-pip" {
127+ name = " ${ local . prefix-onprem } -vpn-gateway1-pip"
128+ location = azurerm_resource_group. onprem-vnet-rg . location
129+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
130+
131+ allocation_method = " Dynamic"
132+ }
133+
134+ resource "azurerm_virtual_network_gateway" "onprem-vpn-gateway" {
135+ name = " onprem-vpn-gateway1"
136+ location = azurerm_resource_group. onprem-vnet-rg . location
137+ resource_group_name = azurerm_resource_group. onprem-vnet-rg . name
138+
139+ type = " Vpn"
140+ vpn_type = " RouteBased"
141+
142+ active_active = false
143+ enable_bgp = false
144+ sku = " VpnGw1"
145+
146+ ip_configuration {
147+ name = " vnetGatewayConfig"
148+ public_ip_address_id = azurerm_public_ip. onprem-vpn-gateway1-pip . id
149+ private_ip_address_allocation = " Dynamic"
150+ subnet_id = azurerm_subnet. onprem-gateway-subnet . id
151+ }
152+ depends_on = [azurerm_public_ip . onprem-vpn-gateway1-pip ]
153+
154+ }
0 commit comments