]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/nova/manifests/network.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / nova / manifests / network.pp
diff --git a/3rdparty/modules/nova/manifests/network.pp b/3rdparty/modules/nova/manifests/network.pp
new file mode 100644 (file)
index 0000000..e928715
--- /dev/null
@@ -0,0 +1,153 @@
+# == 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")
+    }
+  }
+
+}