locals.bastion.tf (22 lines of code) (raw):
locals {
bastions_enabled = { for key, value in var.virtual_hubs : key => try(value.bastion, null) != null }
}
locals {
bastion_host_public_ips = {
for key, value in var.virtual_hubs : key => merge({
location = value.hub.location
resource_group_name = value.hub.resource_group
}, value.bastion.bastion_public_ip) if local.bastions_enabled[key]
}
bastion_hosts = {
for key, value in var.virtual_hubs : key => merge({
location = value.hub.location
resource_group_name = value.hub.resource_group
ip_configuration = {
name = "bastion-ip-config"
subnet_id = module.virtual_network_side_car[key].subnets["bastion"].resource_id
public_ip_address_id = module.bastion_public_ip[key].public_ip_id
}
}, value.bastion.bastion_host) if local.bastions_enabled[key]
}
}