Newer
Older
Alessandro Costantini
committed
# A static class to set up a shared network. Should appear on the
# controller node. It sets up the public network(s), private network(s),
# subnets (for admin and for test), and (if enabled) the routers that
# connect the subnets to the public network(s).
Alessandro Costantini
committed
#
# After this class has run, you should have a functional network
# avaiable for your test user to launch and connect machines to.
class iaas::setup::sharednetwork (
$external_network1 = hiera('iaas::profile::neutron::external_network1', undef),
$gateway1 = hiera('iaas::profile::neutron::external_gateway1', undef),
$start_ip1 = hiera('iaas::profile::neutron::network_external1_ippool_start', undef),
$end_ip1 = hiera('iaas::profile::neutron::network_external1_ippool_end', undef),
$external_network2 = hiera('iaas::profile::neutron::external_network2', undef),
$gateway2 = hiera('iaas::profile::neutron::external_gateway2', undef),
$start_ip2 = hiera('iaas::profile::neutron::network_external2_ippool_start', undef),
$end_ip2 = hiera('iaas::profile::neutron::network_external2_ippool_end', undef),
$dns = hiera('iaas::profile::base::dns_servers', undef),
$private_network1 = hiera('iaas::profile::neutron::network_neutron_private1', undef),
$private_network2 = hiera('iaas::profile::neutron::network_neutron_private2', undef),
Alessandro Costantini
committed
) {
$ip_range1 = "start=${start_ip1},end=${end_ip1}"
$ip_range2 = "start=${start_ip2},end=${end_ip2}"
Alessandro Costantini
committed
neutron_network { 'public1':
Alessandro Costantini
committed
router_external => true,
provider_physical_network => 'physnet1',
Alessandro Costantini
committed
} ->
Alessandro Costantini
committed
neutron_subnet { "public1-$external_network1":
cidr => $external_network1,
Alessandro Costantini
committed
ip_version => '4',
gateway_ip => $gateway1,
Alessandro Costantini
committed
enable_dhcp => false,
network_name => 'public1',
allocation_pools => [$ip_range1],
} ->
neutron_network { 'private1':
tenant_name => 'test',
provider_network_type => 'gre',
router_external => false,
shared => false,
} ->
neutron_subnet { $private_network1:
cidr => $private_network1,
ip_version => '4',
enable_dhcp => true,
network_name => 'private1',
tenant_name => 'test',
dns_nameservers => [$dns],
Alessandro Costantini
committed
}
if $external_network2 {
neutron_network { 'public2':
tenant_name => 'admin',
provider_network_type => 'flat',
router_external => true,
provider_physical_network => 'physnet2',
shared => false,
} ->
Alessandro Costantini
committed
neutron_subnet { "public2-$external_network2":
cidr => $external_network2,
ip_version => '4',
gateway_ip => $gateway2,
enable_dhcp => false,
network_name => 'public2',
tenant_name => 'admin',
allocation_pools => [$ip_range2],
dns_nameservers => [$dns],
} ->
neutron_network { 'private2':
tenant_name => 'test',
provider_network_type => 'gre',
router_external => false,
shared => false,
} ->
neutron_subnet { $private_network2:
cidr => $private_network2,
ip_version => '4',
enable_dhcp => true,
network_name => 'private2',
tenant_name => 'test',
dns_nameservers => [$dns],
# router setup for the tenant test
# Commented for production environments
# iaas::setup::router { "test1:${private_network1}": }
# if $external_network2 {
# iaas::setup::router { "test2:${private_network2}": }
# }