1+ resource "azurerm_resource_group" "rg1" {
2+ name = " myResourceGroupAG"
3+ location = " eastus"
4+ }
5+
6+ resource "azurerm_virtual_network" "vnet1" {
7+ name = " myVNet"
8+ resource_group_name = azurerm_resource_group. rg1 . name
9+ location = azurerm_resource_group. rg1 . location
10+ address_space = [" 10.21.0.0/16" ]
11+ }
12+
13+ resource "azurerm_subnet" "frontend" {
14+ name = " myAGSubnet"
15+ resource_group_name = azurerm_resource_group. rg1 . name
16+ virtual_network_name = azurerm_virtual_network. vnet1 . name
17+ address_prefixes = [" 10.21.0.0/24" ]
18+ }
19+
20+ resource "azurerm_subnet" "backend" {
21+ name = " myBackendSubnet"
22+ resource_group_name = azurerm_resource_group. rg1 . name
23+ virtual_network_name = azurerm_virtual_network. vnet1 . name
24+ address_prefixes = [" 10.21.1.0/24" ]
25+ }
26+
27+ resource "azurerm_public_ip" "pip1" {
28+ name = " myAGPublicIPAddress"
29+ resource_group_name = azurerm_resource_group. rg1 . name
30+ location = azurerm_resource_group. rg1 . location
31+ allocation_method = " Static"
32+ sku = " Standard"
33+ }
34+
35+
36+
37+ resource "azurerm_application_gateway" "network" {
38+ name = " myAppGateway"
39+ resource_group_name = azurerm_resource_group. rg1 . name
40+ location = azurerm_resource_group. rg1 . location
41+
42+ sku {
43+ name = " Standard_v2"
44+ tier = " Standard_v2"
45+ capacity = 2
46+ }
47+
48+ gateway_ip_configuration {
49+ name = " my-gateway-ip-configuration"
50+ subnet_id = azurerm_subnet. frontend . id
51+ }
52+
53+ frontend_port {
54+ name = var. frontend_port_name
55+ port = 80
56+ }
57+
58+ frontend_ip_configuration {
59+ name = var. frontend_ip_configuration_name
60+ public_ip_address_id = azurerm_public_ip. pip1 . id
61+ }
62+
63+ backend_address_pool {
64+ name = var. backend_address_pool_name
65+ }
66+
67+ backend_http_settings {
68+ name = var. http_setting_name
69+ cookie_based_affinity = " Disabled"
70+ port = 80
71+ protocol = " Http"
72+ request_timeout = 60
73+ }
74+
75+ http_listener {
76+ name = var. listener_name
77+ frontend_ip_configuration_name = var. frontend_ip_configuration_name
78+ frontend_port_name = var. frontend_port_name
79+ protocol = " Http"
80+ }
81+
82+ request_routing_rule {
83+ name = var. request_routing_rule_name
84+ rule_type = " Basic"
85+ http_listener_name = var. listener_name
86+ backend_address_pool_name = var. backend_address_pool_name
87+ backend_http_settings_name = var. http_setting_name
88+ }
89+ }
90+
91+ resource "azurerm_network_interface" "nic" {
92+ count = 2
93+ name = " nic-${ count . index + 1 } "
94+ location = azurerm_resource_group. rg1 . location
95+ resource_group_name = azurerm_resource_group. rg1 . name
96+
97+ ip_configuration {
98+ name = " nic-ipconfig-${ count . index + 1 } "
99+ subnet_id = azurerm_subnet. backend . id
100+ private_ip_address_allocation = " Dynamic"
101+ }
102+ }
103+
104+ resource "azurerm_network_interface_application_gateway_backend_address_pool_association" "nic-assoc01" {
105+ count = 2
106+ network_interface_id = azurerm_network_interface. nic [count . index ]. id
107+ ip_configuration_name = " nic-ipconfig-${ count . index + 1 } "
108+ backend_address_pool_id = azurerm_application_gateway. network . backend_address_pool [0 ]. id
109+ }
110+
111+ resource "random_password" "password" {
112+ length = 16
113+ special = true
114+ lower = true
115+ upper = true
116+ number = true
117+ }
118+
119+ resource "azurerm_windows_virtual_machine" "vm" {
120+ count = 2
121+ name = " myVM${ count . index + 1 } "
122+ resource_group_name = azurerm_resource_group. rg1 . name
123+ location = azurerm_resource_group. rg1 . location
124+ size = " Standard_DS1_v2"
125+ admin_username = " azureadmin"
126+ admin_password = random_password. password . result
127+
128+ network_interface_ids = [
129+ azurerm_network_interface . nic [count . index ]. id ,
130+ ]
131+
132+ os_disk {
133+ caching = " ReadWrite"
134+ storage_account_type = " Standard_LRS"
135+ }
136+
137+
138+ source_image_reference {
139+ publisher = " MicrosoftWindowsServer"
140+ offer = " WindowsServer"
141+ sku = " 2019-Datacenter"
142+ version = " latest"
143+ }
144+ }
145+
146+ resource "azurerm_virtual_machine_extension" "vm-extensions" {
147+ count = 2
148+ name = " vm${ count . index + 1 } -ext"
149+ virtual_machine_id = azurerm_windows_virtual_machine. vm [count . index ]. id
150+ publisher = " Microsoft.Compute"
151+ type = " CustomScriptExtension"
152+ type_handler_version = " 1.10"
153+
154+ settings = << SETTINGS
155+ {
156+ "commandToExecute": "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"
157+ }
158+ SETTINGS
159+
160+ }
0 commit comments