Skip to content

Commit 7752e32

Browse files
feat: Prepare Application Gateway for APIM change to External mode for Front Door migration
1 parent e678810 commit 7752e32

File tree

3 files changed

+91
-50
lines changed

3 files changed

+91
-50
lines changed

infrastructure/modules/application-gateway/main.tf

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,64 @@ resource "azurerm_application_gateway" "this" {
158158
backend_address_pool_name = var.names.backend_address_pool_name[request_routing_rule.value.backend_address_pool_key]
159159
backend_http_settings_name = var.names.backend_http_settings_name[request_routing_rule.value.backend_http_settings_key]
160160
priority = request_routing_rule.value.priority
161+
rewrite_rule_set_name = try(var.names.rewrite_rule_set_name[request_routing_rule.value.rewrite_rule_set_key], null)
162+
}
163+
}
164+
165+
dynamic "rewrite_rule_set" {
166+
for_each = var.rewrite_rule_set
167+
168+
content {
169+
name = var.names.rewrite_rule_set_name[rewrite_rule_set.key]
170+
171+
dynamic "rewrite_rule" {
172+
for_each = rewrite_rule_set.value.rewrite_rule
173+
174+
content {
175+
name = rewrite_rule.key
176+
rule_sequence = rewrite_rule.value.rule_sequence
177+
178+
dynamic "condition" {
179+
for_each = coalesce(rewrite_rule.value.condition, {})
180+
181+
content {
182+
variable = condition.value.variable
183+
pattern = condition.value.pattern
184+
ignore_case = condition.value.ignore_case
185+
negate = condition.value.negate
186+
}
187+
}
188+
189+
dynamic "response_header_configuration" {
190+
for_each = coalesce(rewrite_rule.value.response_header_configuration, {})
191+
192+
content {
193+
header_name = response_header_configuration.key
194+
header_value = response_header_configuration.value
195+
}
196+
}
197+
198+
dynamic "request_header_configuration" {
199+
for_each = coalesce(rewrite_rule.value.request_header_configuration, {})
200+
201+
content {
202+
header_name = request_header_configuration.key
203+
header_value = request_header_configuration.value
204+
}
205+
}
206+
207+
dynamic "url" {
208+
for_each = rewrite_rule.value.url != null ? [1] : []
209+
210+
content {
211+
path = rewrite_rule.value.url.path
212+
query_string = rewrite_rule.value.url.query_string
213+
components = rewrite_rule.value.url.components
214+
reroute = rewrite_rule.value.url.reroute
215+
}
216+
}
217+
}
218+
}
161219
}
162220
}
163221

infrastructure/modules/application-gateway/variables.tf

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ variable "request_routing_rule" {
115115
backend_http_settings_key = string
116116
http_listener_key = string
117117
priority = number
118+
rewrite_rule_set_key = optional(string)
118119
rule_type = string
119120
}))
120121
}
@@ -124,6 +125,30 @@ variable "resource_group_name" {
124125
description = "The name of the resource group in which to create the Application Gateway. Changing this forces a new resource to be created."
125126
}
126127

128+
variable "rewrite_rule_set" {
129+
description = "A map of request rewrite rules for the Application Gateway. The key name will be used to retrieve the name from var.names."
130+
type = map(object({
131+
rewrite_rule = optional(map(object({
132+
rule_sequence = number
133+
condition = optional(map(object({
134+
ignore_case = optional(bool)
135+
negate = optional(bool)
136+
pattern = string
137+
variable = string
138+
})))
139+
request_header_configuration = optional(map(string))
140+
response_header_configuration = optional(map(string))
141+
url = optional(object({
142+
components = optional(string)
143+
path = optional(string)
144+
query_string = optional(string)
145+
reroute = optional(bool)
146+
}))
147+
})))
148+
}))
149+
default = {}
150+
}
151+
127152
variable "sku" {
128153
type = string
129154
description = "The SKU of the Application Gateway (Basic, Standard_v2, or WAF_v2)."

infrastructure/modules/shared-config/output.tf

Lines changed: 8 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -20,75 +20,33 @@ locals {
2020
probe_name = {
2121
apim_gateway = lower("apim-gateway-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
2222
apim_portal = lower("apim-portal-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
23-
cohman_www_dev = lower("cohman-www-dev-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
24-
cohman_www_nft = lower("cohman-www-nft-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
25-
cohman_www_int = lower("cohman-www-int-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
26-
cohman_www_pre = lower("cohman-www-pre-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
27-
cohman_www_prd = lower("cohman-www-prd-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
28-
parman_www_dev = lower("parman-www-dev-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
29-
parman_www_nft = lower("parman-www-nft-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
30-
parman_www_int = lower("parman-www-int-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
31-
parman_www_pre = lower("parman-www-pre-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
32-
parman_www_prd = lower("parman-www-prd-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
23+
migration_test = lower("migration-test-probe-${var.env}-${var.location_map[var.location]}-${var.application}")
3324
}
3425
backend_address_pool_name = {
3526
apim_gateway = lower("apim-gateway-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
3627
apim_portal = lower("apim-portal-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
37-
cohman_www_dev = lower("cohman-www-dev-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
38-
cohman_www_nft = lower("cohman-www-nft-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
39-
cohman_www_int = lower("cohman-www-int-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
40-
cohman_www_pre = lower("cohman-www-pre-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
41-
cohman_www_prd = lower("cohman-www-prd-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
42-
parman_www_dev = lower("parman-www-dev-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
43-
parman_www_nft = lower("parman-www-nft-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
44-
parman_www_int = lower("parman-www-int-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
45-
parman_www_pre = lower("parman-www-pre-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
46-
parman_www_prd = lower("parman-www-prd-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
28+
migration_test = lower("migration-test-beap-${var.env}-${var.location_map[var.location]}-${var.application}")
4729
}
4830
backend_http_settings_name = {
4931
apim_shared = lower("apim-shared-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
5032
apim_gateway = lower("apim-gateway-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
5133
apim_portal = lower("apim-portal-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
52-
cohman_www_dev = lower("cohman-www-dev-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
53-
cohman_www_nft = lower("cohman-www-nft-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
54-
cohman_www_int = lower("cohman-www-int-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
55-
cohman_www_pre = lower("cohman-www-pre-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
56-
cohman_www_prd = lower("cohman-www-prd-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
57-
parman_www_dev = lower("parman-www-dev-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
58-
parman_www_nft = lower("parman-www-nft-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
59-
parman_www_int = lower("parman-www-int-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
60-
parman_www_pre = lower("parman-www-pre-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
61-
parman_www_prd = lower("parman-www-prd-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
34+
migration_test = lower("migration-test-htst-${var.env}-${var.location_map[var.location]}-${var.application}")
6235
}
6336
http_listener_name = {
6437
apim_gateway_public = lower("apim-gateway-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
6538
apim_gateway_private = lower("apim-gateway-priv-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
6639
apim_portal_private = lower("apim-portal-priv-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
67-
cohman_www_dev_public = lower("cohman-www-dev-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
68-
cohman_www_nft_public = lower("cohman-www-nft-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
69-
cohman_www_int_public = lower("cohman-www-int-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
70-
cohman_www_pre_public = lower("cohman-www-pre-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
71-
cohman_www_prd_public = lower("cohman-www-prd-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
72-
parman_www_dev_public = lower("parman-www-dev-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
73-
parman_www_nft_public = lower("parman-www-nft-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
74-
parman_www_int_public = lower("parman-www-int-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
75-
parman_www_pre_public = lower("parman-www-pre-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
76-
parman_www_prd_public = lower("parman-www-prd-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
40+
migration_test_public = lower("migration-test-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
41+
}
42+
rewrite_rule_set_name = {
43+
migration_test = lower("migration-test-rwrs-${var.env}-${var.location_map[var.location]}-${var.application}")
7744
}
7845
rule_name = {
7946
apim_gateway_public = lower("apim-gateway-pub-rule-${var.env}-${var.location_map[var.location]}-${var.application}")
8047
apim_gateway_private = lower("apim-gateway-priv-rule-${var.env}-${var.location_map[var.location]}-${var.application}")
8148
apim_portal_private = lower("apim-portal-priv-rule-${var.env}-${var.location_map[var.location]}-${var.application}")
82-
cohman_www_dev_public = lower("cohman-www-dev-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
83-
cohman_www_nft_public = lower("cohman-www-nft-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
84-
cohman_www_int_public = lower("cohman-www-int-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
85-
cohman_www_pre_public = lower("cohman-www-pre-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
86-
cohman_www_prd_public = lower("cohman-www-prd-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
87-
parman_www_dev_public = lower("parman-www-dev-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
88-
parman_www_nft_public = lower("parman-www-nft-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
89-
parman_www_int_public = lower("parman-www-int-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
90-
parman_www_pre_public = lower("parman-www-pre-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
91-
parman_www_prd_public = lower("parman-www-prd-pub-listener-${var.env}-${var.location_map[var.location]}-${var.application}")
49+
migration_test_public = lower("migration-test-pub-rule-${var.env}-${var.location_map[var.location]}-${var.application}")
9250
}
9351
}
9452

0 commit comments

Comments
 (0)