locals.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
# locals =====================================================================

data "aws_availability_zones" "available" { state = "available" }

locals {
  region_abbr = split("-", data.aws_availability_zones.available.zone_ids[0])[0]

  module_tags = {
    managed-by  = "terraform"
    module-name = "networking:nacl"
  }

  # Flatten all ingress rules across all NACLs into a list of {nacl_key, rule}
  ingress_rules = flatten([
    for nacl_key, nacl in var.network_acls : [
      for rule in nacl.ingress_rules : {
        nacl_key = nacl_key
        rule     = rule
      }
    ]
  ])

  # Keyed by "nacl_key-rule_number" — unique and stable across applies
  ingress_map = {
    for item in local.ingress_rules :
    "${item.nacl_key}-${item.rule.rule_number}" => item
  }

  # Flatten all egress rules across all NACLs into a list of {nacl_key, rule}
  egress_rules = flatten([
    for nacl_key, nacl in var.network_acls : [
      for rule in nacl.egress_rules : {
        nacl_key = nacl_key
        rule     = rule
      }
    ]
  ])

  # Keyed by "nacl_key-rule_number" — unique and stable across applies
  egress_map = {
    for item in local.egress_rules :
    "${item.nacl_key}-${item.rule.rule_number}" => item
  }
}