Skip to content
Snippets Groups Projects
sharednetwork.pp 3.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • # 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',
    
        provider_physical_network => 'physnet1',
    
        shared                   => false,
    
      neutron_subnet { "public1-$external_network1":
    
        cidr             => $external_network1,
    
        gateway_ip       => $gateway1,
    
        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}": }
    #  }