Puppet Class: nova::network

Defined in:
manifests/network.pp

Overview

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

Parameters:

  • private_interface (Any) (defaults to: undef)
  • fixed_range (Any) (defaults to: '10.0.0.0/8')
  • public_interface (Any) (defaults to: undef)
  • num_networks (Any) (defaults to: 1)
  • network_size (Any) (defaults to: 255)
  • floating_range (Any) (defaults to: false)
  • enabled (Any) (defaults to: false)
  • network_manager (Any) (defaults to: 'nova.network.manager.FlatDHCPManager')
  • config_overrides (Any) (defaults to: {})
  • create_networks (Any) (defaults to: true)
  • ensure_package (Any) (defaults to: 'present')
  • install_service (Any) (defaults to: true)


58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'manifests/network.pp', line 58

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")
    }
  }

}