fuel-library/deployment/puppet/openstack_tasks/manifests/openstack_network/routers.pp

63 lines
2.7 KiB
Puppet

class openstack_tasks::openstack_network::routers {
notice('MODULAR: openstack_network/routers.pp')
$use_neutron = hiera('use_neutron', false)
$neutron_advanced_config = hiera_hash('neutron_advanced_configuration', { })
# In case of L3 HA enabled this task must be executed on a post-deployment stage.
# as HA routers can't be created when less then 2 L3 agents are available (Neutron limitation)
$l3_ha = pick($neutron_advanced_config['neutron_l3_ha'], false)
$dvr = pick($neutron_advanced_config['neutron_dvr'], false)
$neutron_controller_roles = hiera('neutron_controller_roles', ['controller', 'primary-controller'])
$controllers_num = size(get_nodes_hash_by_roles(hiera_hash('network_metadata'), $neutron_controller_roles))
if $use_neutron {
$access_hash = hiera_hash('access', {})
$keystone_admin_tenant = pick($access_hash['tenant'], 'admin')
$neutron_config = hiera_hash('neutron_config')
$floating_net = try_get_value($neutron_config, 'default_floating_net', 'net04_ext')
$private_net = try_get_value($neutron_config, 'default_private_net', 'net04')
$default_router = try_get_value($neutron_config, 'default_router', 'router04')
$baremetal_router = try_get_value($neutron_config, 'baremetal_router', 'baremetal')
$nets = $neutron_config['predefined_networks']
if ($l3_ha) and ($controllers_num < 2) {
warning ('Not enough controllers to create an HA router')
} else {
neutron_router { $default_router:
ensure => 'present',
gateway_network_name => $floating_net,
name => $default_router,
tenant_name => $keystone_admin_tenant,
} ->
neutron_router_interface { "${default_router}:${private_net}__subnet":
ensure => 'present',
}
if has_key($nets, 'baremetal') {
if $dvr {
neutron_router { $baremetal_router:
ensure => 'present',
gateway_network_name => $floating_net,
name => $baremetal_router,
tenant_name => $keystone_admin_tenant,
distributed => false,
} ->
neutron_router_interface { "${baremetal_router}:baremetal__subnet":
ensure => 'present',
require => Neutron_router[$baremetal_router]
}
} else {
neutron_router_interface { "${default_router}:baremetal__subnet":
ensure => 'present',
require => Neutron_router[$default_router]
}
}
}
}
}
}