1+ # Get the intermediate root management group from the terraform architecture file or bicep parameters
12locals {
23 is_terraform_iac_type = var. iac_type == " terraform"
3- terraform_architecture = local. is_terraform_iac_type ? endswith (var. terraform_architecture_file_path , " .yaml" ) || endswith (var. terraform_architecture_file_path , " .json" ) ? yamldecode (file (" ${ var . module_folder_path } /${ var . terraform_architecture_file_path } " )) : jsondecode (file (" ${ var . module_folder_path } /${ var . terraform_architecture_file_path } " )) : null
4+ terraform_architecture_file_path = " ${ var . module_folder_path } /${ var . terraform_architecture_file_path } "
5+ terraform_architecture_file_extension = split (" ." , var. terraform_architecture_file_path )[length (split (" ." , var. terraform_architecture_file_path )) - 1 ]
6+ terraform_architecture_file_is_yaml = local. terraform_architecture_file_extension == " yaml" || local. terraform_architecture_file_extension == " yml"
7+ terraform_architecture = local. is_terraform_iac_type ? (local. terraform_architecture_file_is_yaml ? yamldecode (file (local. terraform_architecture_file_path )) : jsondecode (file (local. terraform_architecture_file_path ))) : null
48 terraform_intermediate_root_management_group = local. is_terraform_iac_type ? ([for management_group in local . terraform_architecture . management_groups : management_group if management_group . parent_id == null ])[0 ] : null
59 intermediate_root_management_group = local. is_terraform_iac_type ? {
610 id = local.terraform_intermediate_root_management_group.id
@@ -11,17 +15,28 @@ locals {
1115 }
1216}
1317
18+ # Transform the intermediate root management group in the terraform architecture file to ensure it is marked as existing
1419locals {
15- import_block = << EOT
16- import {
17- to = ${ var . terraform_intermediate_root_management_group_state_resource_path_for_import } ["${ local . intermediate_root_management_group . id } "]
18- id = "/providers/Microsoft.Management/managementGroups/${ local . intermediate_root_management_group . id } "
19- }
20- EOT
20+ terraform_management_groups_non_root = local. is_terraform_iac_type ? [ for management_group in local . terraform_architecture . management_groups : management_group if management_group . parent_id != null ] : null
21+ terraform_intermediate_root_management_group_updated = local. is_terraform_iac_type ? merge (
22+ local. terraform_intermediate_root_management_group ,
23+ {
24+ exists = true
25+ }
26+ ) : null
27+ terraform_architecture_file_content_final = local. is_terraform_iac_type ? merge (
28+ local. terraform_architecture ,
29+ {
30+ management_groups = concat (
31+ [local . terraform_intermediate_root_management_group_updated ],
32+ local. terraform_management_groups_non_root
33+ )
34+ }
35+ ) : null
2136
22- import_block_files = local. is_terraform_iac_type ? {
23- " imports.management_groups.tf " = {
24- content = local.import_block
37+ terraform_architecture_files = local. is_terraform_iac_type ? {
38+ (var . terraform_architecture_file_path ) = {
39+ content = local.terraform_architecture_file_is_yaml ? yamlencode (local . terraform_architecture_file_content_final ) : jsonencode (local . terraform_architecture_file_content_final )
2540 }
2641 } : {}
2742}
0 commit comments