# == Class: nova::network # # Manages nova-network. # # An OpenStack deployment that includes compute and networking will use either # nova-network or Neutron. Neutron is newer and nova-network is the legacy # networking support built directly into Nova. However, nova-network is still # fully supported, is not feature frozen, and is not yet officially deprecated. # # === Parameters: # # [*private_interface*] # (optional) Interface used by private network. # Defaults to undef # # [*fixed_range*] # (optional) Fixed private network range. # Defaults to '10.0.0.0/8' # # [*public_interface*] # (optional) Interface used to connect vms to public network. # Defaults to undef # # [*num_networks*] # (optional) Number of networks that fixed range network should be # split into. # Defaults to 1 # # [*floating_range*] # (optional) Range of floating ip addresses to create. # Defaults to false # # [*enabled*] # (optional) Whether the network service should be enabled. # Defaults to false # # [*network_manager*] # (optional) The type of network manager to use. # Defaults to 'nova.network.manager.FlatDHCPManager' # # [*config_overrides*] # (optional) Additional parameters to pass to the network manager class # Defaults to {} # # [*create_networks*] # (optional) Whether actual nova networks should be created using # the fixed and floating ranges provided. # Defaults to true # # [*ensure_package*] # (optional) The state of the nova network package # Defaults to 'present' # # [*install_service*] # (optional) Whether to install and enable the service # Defaults to true # class nova::network( $private_interface = undef, $fixed_range = '10.0.0.0/8', $public_interface = undef, $num_networks = 1, $network_size = 255, $floating_range = false, $enabled = false, $network_manager = 'nova.network.manager.FlatDHCPManager', $config_overrides = {}, $create_networks = true, $ensure_package = 'present', $install_service = true ) { include nova::params # forward all ipv4 traffic # this is required for the vms to pass through the gateways # public interface Exec { path => $::path } ensure_resource('sysctl::value', 'net.ipv4.ip_forward', { value => '1' }) if $floating_range { nova_config { 'DEFAULT/floating_range': value => $floating_range } } if has_key($config_overrides, 'vlan_start') { $vlan_start = $config_overrides['vlan_start'] } else { $vlan_start = undef } if $install_service { nova::generic_service { 'network': enabled => $enabled, package_name => $::nova::params::network_package_name, service_name => $::nova::params::network_service_name, ensure_package => $ensure_package, before => Exec['networking-refresh'] } } if $create_networks { nova::manage::network { 'nova-vm-net': network => $fixed_range, num_networks => $num_networks, network_size => $network_size, vlan_start => $vlan_start, } if $floating_range { nova::manage::floating { 'nova-vm-floating': network => $floating_range, } } } case $network_manager { 'nova.network.manager.FlatDHCPManager': { # I am not proud of this $parameters = { fixed_range => $fixed_range, public_interface => $public_interface, flat_interface => $private_interface } $resource_parameters = merge($config_overrides, $parameters) $flatdhcp_resource = {'nova::network::flatdhcp' => $resource_parameters } create_resources('class', $flatdhcp_resource) } 'nova.network.manager.FlatManager': { $parameters = { fixed_range => $fixed_range, public_interface => $public_interface, flat_interface => $private_interface } $resource_parameters = merge($config_overrides, $parameters) $flat_resource = {'nova::network::flat' => $resource_parameters } create_resources('class', $flat_resource) } 'nova.network.manager.VlanManager': { $parameters = { fixed_range => $fixed_range, public_interface => $public_interface, vlan_interface => $private_interface } $resource_parameters = merge($config_overrides, $parameters) $vlan_resource = { 'nova::network::vlan' => $resource_parameters } create_resources('class', $vlan_resource) } default: { fail("Unsupported network manager: ${nova::network_manager} The supported network managers are nova.network.manager.FlatManager, nova.network.FlatDHCPManager and nova.network.manager.VlanManager") } } }