Skip to content

Commit 7b381c9

Browse files
committed
create app gateway quickstart
1 parent 112c5b5 commit 7b381c9

3 files changed

Lines changed: 585 additions & 0 deletions

File tree

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

0 commit comments

Comments
 (0)