1 # == Class: nova::network
3 # Manages nova-network.
5 # An OpenStack deployment that includes compute and networking will use either
6 # nova-network or Neutron. Neutron is newer and nova-network is the legacy
7 # networking support built directly into Nova. However, nova-network is still
8 # fully supported, is not feature frozen, and is not yet officially deprecated.
12 # [*private_interface*]
13 # (optional) Interface used by private network.
17 # (optional) Fixed private network range.
18 # Defaults to '10.0.0.0/8'
20 # [*public_interface*]
21 # (optional) Interface used to connect vms to public network.
25 # (optional) Number of networks that fixed range network should be
30 # (optional) Range of floating ip addresses to create.
34 # (optional) Whether the network service should be enabled.
38 # (optional) The type of network manager to use.
39 # Defaults to 'nova.network.manager.FlatDHCPManager'
41 # [*config_overrides*]
42 # (optional) Additional parameters to pass to the network manager class
46 # (optional) Whether actual nova networks should be created using
47 # the fixed and floating ranges provided.
51 # (optional) The state of the nova network package
52 # Defaults to 'present'
55 # (optional) Whether to install and enable the service
59 $private_interface = undef,
60 $fixed_range = '10.0.0.0/8',
61 $public_interface = undef,
64 $floating_range = false,
66 $network_manager = 'nova.network.manager.FlatDHCPManager',
67 $config_overrides = {},
68 $create_networks = true,
69 $ensure_package = 'present',
70 $install_service = true
75 # forward all ipv4 traffic
76 # this is required for the vms to pass through the gateways
82 ensure_resource('sysctl::value', 'net.ipv4.ip_forward', { value => '1' })
85 nova_config { 'DEFAULT/floating_range': value => $floating_range }
88 if has_key($config_overrides, 'vlan_start') {
89 $vlan_start = $config_overrides['vlan_start']
95 nova::generic_service { 'network':
97 package_name => $::nova::params::network_package_name,
98 service_name => $::nova::params::network_service_name,
99 ensure_package => $ensure_package,
100 before => Exec['networking-refresh']
104 if $create_networks {
105 nova::manage::network { 'nova-vm-net':
106 network => $fixed_range,
107 num_networks => $num_networks,
108 network_size => $network_size,
109 vlan_start => $vlan_start,
112 nova::manage::floating { 'nova-vm-floating':
113 network => $floating_range,
118 case $network_manager {
120 'nova.network.manager.FlatDHCPManager': {
121 # I am not proud of this
122 $parameters = { fixed_range => $fixed_range,
123 public_interface => $public_interface,
124 flat_interface => $private_interface
126 $resource_parameters = merge($config_overrides, $parameters)
127 $flatdhcp_resource = {'nova::network::flatdhcp' => $resource_parameters }
128 create_resources('class', $flatdhcp_resource)
130 'nova.network.manager.FlatManager': {
131 $parameters = { fixed_range => $fixed_range,
132 public_interface => $public_interface,
133 flat_interface => $private_interface
135 $resource_parameters = merge($config_overrides, $parameters)
136 $flat_resource = {'nova::network::flat' => $resource_parameters }
137 create_resources('class', $flat_resource)
139 'nova.network.manager.VlanManager': {
140 $parameters = { fixed_range => $fixed_range,
141 public_interface => $public_interface,
142 vlan_interface => $private_interface
144 $resource_parameters = merge($config_overrides, $parameters)
145 $vlan_resource = { 'nova::network::vlan' => $resource_parameters }
146 create_resources('class', $vlan_resource)
149 fail("Unsupported network manager: ${nova::network_manager} The supported network managers are nova.network.manager.FlatManager, nova.network.FlatDHCPManager and nova.network.manager.VlanManager")