locals.tf (21 lines of code) (raw):
locals {
address_space_size = tonumber(local.address_space_split[1])
address_space_split = split("/", var.address_space)
}
locals {
efficient_prefix_cidr_ranges = cidrsubnets(var.address_space, local.efficient_prefix_new_bits...)
efficient_prefix_keys = keys(local.efficient_prefix_order_by_size)
efficient_prefix_new_bits = [for size in values(local.efficient_prefix_order_by_size) : size - local.address_space_size]
efficient_prefix_order_by_size = { for key, value in var.address_prefixes : "${format("%03s", value)}||${key}" => value }
}
locals {
efficient_prefixes = { for key, value in local.efficient_prefix_order_by_size : split("||", key)[1] => local.efficient_prefix_cidr_ranges[index(local.efficient_prefix_keys, key)] }
}
locals {
inefficient_prefix_cidr_ranges = cidrsubnets(var.address_space, local.inefficient_prefix_new_bits...)
inefficient_prefix_keys = keys(var.address_prefixes)
inefficient_prefix_new_bits = [for size in values(var.address_prefixes) : size - local.address_space_size]
}
locals {
inefficient_prefixes = { for key, value in var.address_prefixes : key => local.inefficient_prefix_cidr_ranges[index(local.inefficient_prefix_keys, key)] }
}