# Organizational Units (supports upto 3 levels nested OUs) --------------------- # Level 1 OUs ------------------------------------------------------------------ # Directly under Root. parent_key must be 'root' in the OU definition. resource "aws_organizations_organizational_unit" "level1" { for_each = local.level1_ous name = each.value.name parent_id = var.root_id tags = local.ou_tags[each.key] lifecycle { prevent_destroy = true } } # Level 2 OUs ------------------------------------------------------------------ # One level below level 1 OUs. parent_key references a key in local.level1_ous. resource "aws_organizations_organizational_unit" "level2" { for_each = local.level2_ous name = each.value.name parent_id = aws_organizations_organizational_unit.level1[each.value.parent_key].id tags = local.ou_tags[each.key] depends_on = [aws_organizations_organizational_unit.level1] lifecycle { prevent_destroy = true } } # Level 3 OUs ------------------------------------------------------------------ # One level below level 2 OUs. parent_key references a key in local.level2_ous. resource "aws_organizations_organizational_unit" "level3" { for_each = local.level3_ous name = each.value.name parent_id = aws_organizations_organizational_unit.level2[each.value.parent_key].id tags = local.ou_tags[each.key] depends_on = [aws_organizations_organizational_unit.level2] lifecycle { prevent_destroy = true } }