main.tf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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
  }
}