locals.bastion.tf (22 lines of code) (raw):
locals {
bastions_enabled = { for key, value in var.hub_virtual_networks : key => try(value.bastion, null) != null }
}
locals {
bastion_host_public_ips = {
for key, value in var.hub_virtual_networks : key => merge({
location = value.hub_virtual_network.location
resource_group_name = value.hub_virtual_network.resource_group_name
}, value.bastion.bastion_public_ip) if local.bastions_enabled[key]
}
bastion_hosts = {
for key, value in var.hub_virtual_networks : key => merge({
location = value.hub_virtual_network.location
resource_group_name = value.hub_virtual_network.resource_group_name
ip_configuration = {
name = "bastion-ip-config"
subnet_id = module.hub_and_spoke_vnet.virtual_networks[key].subnet_ids["${key}-bastion"]
public_ip_address_id = module.bastion_public_ip[key].public_ip_id
}
}, value.bastion.bastion_host) if local.bastions_enabled[key]
}
}