@@ -179,7 +179,7 @@ resource "azurerm_frontdoor" "frontdoor" {
179179 frontend_endpoints = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. frontend_endpoints
180180 /* * if forwarding_configuration is set */
181181 dynamic "forwarding_configuration" {
182- for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . forwarding_protocol != " " && local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . cache_enabled == false ? [1 ] : []
182+ for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . backend_pool_name != " " && local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . cache_enabled == false ? [1 ] : []
183183 content {
184184 forwarding_protocol = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . forwarding_protocol
185185 backend_pool_name = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . backend_pool_name
@@ -188,7 +188,7 @@ resource "azurerm_frontdoor" "frontdoor" {
188188 }
189189 }
190190 dynamic "forwarding_configuration" {
191- for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . forwarding_protocol != " " && local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . cache_enabled == true ? [1 ] : []
191+ for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . backend_pool_name != " " && local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . cache_enabled == true ? [1 ] : []
192192 content {
193193 forwarding_protocol = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . forwarding_protocol
194194 backend_pool_name = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. forwarding_configuration . backend_pool_name
@@ -202,7 +202,7 @@ resource "azurerm_frontdoor" "frontdoor" {
202202 }
203203 /* * if redirect_configuration is set */
204204 dynamic "redirect_configuration" {
205- for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. redirect_configuration . redirect_protocol != " " ? [1 ] : []
205+ for_each = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. redirect_configuration . redirect_type != " " ? [1 ] : []
206206 content {
207207 custom_host = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. redirect_configuration . custom_host
208208 redirect_protocol = local. frontdoor [each . key ]. routing_rule [routing_rule . key ]. redirect_configuration . redirect_protocol
@@ -244,7 +244,7 @@ resource "azurerm_frontdoor_custom_https_configuration" "frontdoor_custom_https_
244244# * https://docs.microsoft.com/en-us/cli/azure/ext/front-door/network/front-door/rules-engine?view=azure-cli-latest
245245# */
246246resource "azurerm_resource_group_template_deployment" "frontdoor_rules_engine" {
247- for_each = toset (local. frontdoor_rules_engine_keys . override )
247+ for_each = toset (local. frontdoor_rules_engine_action . override )
248248
249249 name = local. frontdoor_rules_engine [each . key ]. name == " " ? each. key : local. frontdoor_rules_engine [each . key ]. name
250250 resource_group_name = local. frontdoor_rules_engine [each . key ]. resource_group_name
@@ -265,8 +265,24 @@ resource "azurerm_resource_group_template_deployment" "frontdoor_rules_engine" {
265265 "name": "${ format (" %s" , local. frontdoor_rules_engine [each . key ]. rule [rule ]. name == " " ? rule : local. frontdoor_rules_engine [each . key ]. resource_group_name . rule [rule ]. name )} ",
266266 "matchProcessingBehavior": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. match_processing_behavior } ",
267267 "action": {
268- "requestHeaderActions": [],
269- "responseHeaderActions": [],
268+ "requestHeaderActions": [
269+ %{ for request_header in keys (local. frontdoor_rules_engine [each . key ]. rule [rule ]. action . request_header )}
270+ %{ if index (keys (local. frontdoor_rules_engine [each . key ]. rule [rule ]. action . request_header ), request_header) > 0 } ,{%{ else } {%{ endif }
271+ "headerActionType": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . request_header [request_header ]. header_action_type } ",
272+ "headerName": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . request_header [request_header ]. header_name } ",
273+ "value": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . request_header [request_header ]. value } "
274+ }
275+ %{ endfor }
276+ ],
277+ "responseHeaderActions": [
278+ %{ for response_header in keys (local. frontdoor_rules_engine [each . key ]. rule [rule ]. action . response_header )}
279+ %{ if index (keys (local. frontdoor_rules_engine [each . key ]. rule [rule ]. action . response_header ), response_header) > 0 } ,{%{ else } {%{ endif }
280+ "headerActionType": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . response_header [response_header ]. header_action_type } ",
281+ "headerName": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . response_header [response_header ]. header_name } ",
282+ "value": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . response_header [response_header ]. value } "
283+ }
284+ %{ endfor }
285+ ],
270286 "routeConfigurationOverride": {
271287 "@odata.type": "#Microsoft.Azure.FrontDoor.Models.FrontdoorRedirectConfiguration",
272288 %{ if local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . route_configuration_override . custom_path != null } "customPath": "${ local . frontdoor_rules_engine [each . key ]. rule [rule ]. action . route_configuration_override . custom_path } ",%{ else } %{ endif }
@@ -300,20 +316,21 @@ resource "azurerm_resource_group_template_deployment" "frontdoor_rules_engine" {
300316
301317/* * add rules engine to routing rule */
302318resource "null_resource" "frontdoor_routing_rule-rules_engine" {
303- for_each = toset (local . frontdoor_rules_engine_keys . override )
319+ for_each = var . frontdoor_rules_engine
304320
305321 triggers = {
306- routing_rule = local.frontdoor_rules_engine[each.key].routing_rule_name
307- frontdoor_name = local.frontdoor_rules_engine[each.key].frontdoor_name
308- parameters_content = azurerm_resource_group_template_deployment.frontdoor_rules_engine[each.key].parameters_content
322+ frontdoor_name = local.frontdoor_rules_engine[each.key].frontdoor_name
323+ routing_rule_name = local.frontdoor_rules_engine[each.key].routing_rule_name
324+ rules_engine_name = contains (local. frontdoor_rules_engine_action . override , each. key ) == true ? azurerm_resource_group_template_deployment.frontdoor_rules_engine[each.key].name : azurerm_frontdoor_rules_engine.frontdoor_rules_engine[each.key].name
325+ content = contains (local. frontdoor_rules_engine_action . override , each. key ) == true ? azurerm_resource_group_template_deployment.frontdoor_rules_engine[each.key].parameters_content : yamlencode (azurerm_frontdoor_rules_engine. frontdoor_rules_engine [each . key ]. rule )
309326 }
310327
311328 provisioner "local-exec" {
312329 environment = {
313330 ROUTING_RULES = local.frontdoor_rules_engine[each.key].routing_rule_name
314331 }
315332
316- command = " for ROUTING_RULE in $($ ROUTING_RULES) ; do $( az network front-door routing-rule update --name $ROUTING_RULE --resource-group ${ azurerm_resource_group_template_deployment . frontdoor_rules_engine [each . key ]. resource_group_name } --front-door-name ${ local . frontdoor_rules_engine [each . key ]. frontdoor_name } --rules-engine ${ azurerm_resource_group_template_deployment . frontdoor_rules_engine [ each . key ] . name } ) ; done"
333+ command = " for ROUTING_RULE in $ROUTING_RULES; do az network front-door routing-rule update --name $ROUTING_RULE --resource-group ${ local . frontdoor_rules_engine [each . key ]. resource_group_name } --front-door-name ${ local . frontdoor_rules_engine [each . key ]. frontdoor_name } --rules-engine ${ each . key } ; done"
317334 }
318335}
319336
@@ -323,20 +340,20 @@ resource "null_resource" "frontdoor_rules_engine" {
323340
324341 triggers = {
325342 frontdoor_name = azurerm_frontdoor.frontdoor[each.key].name
326- rules_engine = join (" " , local . frontdoor_rules_engine_keys . override )
343+ rules_engine = join (" " , keys (var . frontdoor_rules_engine ) )
327344 }
328345
329346 provisioner "local-exec" {
330347 environment = {
331- RULES = join (" |" , local . frontdoor_rules_engine_keys . override )
348+ RULES = join (" |" , keys (var . frontdoor_rules_engine ) )
332349 }
333350
334351 command = " for REMOVE_RULE in $(az network front-door rules-engine list --resource-group ${ azurerm_frontdoor . frontdoor [each . key ]. resource_group_name } --front-door-name ${ azurerm_frontdoor . frontdoor [each . key ]. name } --query '[].name' -o tsv | egrep -v $RULES); do $(az network front-door rules-engine delete --resource-group ${ azurerm_frontdoor . frontdoor [each . key ]. resource_group_name } --front-door-name ${ azurerm_frontdoor . frontdoor [each . key ]. name } --name $REMOVE_RULE); done"
335352 }
336353}
337354
338355resource "azurerm_frontdoor_rules_engine" "frontdoor_rules_engine" {
339- for_each = toset (local. frontdoor_rules_engine_keys . header )
356+ for_each = setsubtract (local. frontdoor_rules_engine_action . header , local . frontdoor_rules_engine_action . override )
340357
341358 name = local. frontdoor_rules_engine [each . key ]. name == " " ? each. key : local. frontdoor_rules_engine [each . key ]. name
342359 frontdoor_name = local. frontdoor_rules_engine [each . key ]. frontdoor_name
0 commit comments