# locals ===================================================================== data "aws_availability_zones" "available" { state = "available" } data "aws_subnet" "instance" { for_each = { for k, v in var.instances : k => v.subnet_id } id = each.value } locals { region_abbr = split("-", data.aws_availability_zones.available.zone_ids[0])[0] az_name_to_zone_id = zipmap( data.aws_availability_zones.available.names, data.aws_availability_zones.available.zone_ids ) instance_zone_id = { for k, v in data.aws_subnet.instance : k => local.az_name_to_zone_id[v.availability_zone] } instance_names = { for k, v in var.instances : k => "${var.name_prefix}-${local.instance_zone_id[k]}-${v.name_suffix}" } module_tags = { managed-by = "terraform" module-name = "compute:ec2-node" } data_volume_map = { for item in flatten([ for k, v in var.instances : [ for idx, vol in v.data_volumes : { key = "${k}-data-vol-${format("%02d", idx + 1)}" instance_key = k idx = idx vol = vol } ] ]) : item.key => item } }