# 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). # # 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 ( ##Variable definition $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), ) { $ip_range1 = "start=${start_ip1},end=${end_ip1}" $ip_range2 = "start=${start_ip2},end=${end_ip2}" neutron_network { 'public1': tenant_name => 'admin', provider_network_type => 'flat', router_external => true, provider_physical_network => 'physnet1', shared => false, } -> neutron_subnet { "public1-$external_network1": cidr => $external_network1, ip_version => '4', gateway_ip => $gateway1, enable_dhcp => false, network_name => 'public1', tenant_name => 'admin', allocation_pools => [$ip_range1], dns_nameservers => [$dns], } -> 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], } if $external_network2 { neutron_network { 'public2': tenant_name => 'admin', provider_network_type => 'flat', router_external => true, provider_physical_network => 'physnet2', shared => false, } -> 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}": } # } }