]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/neutron/manifests/agents/l3.pp
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / neutron / manifests / agents / l3.pp
diff --git a/3rdparty/modules/neutron/manifests/agents/l3.pp b/3rdparty/modules/neutron/manifests/agents/l3.pp
new file mode 100644 (file)
index 0000000..55d303a
--- /dev/null
@@ -0,0 +1,205 @@
+# == Class: neutron::agents::l3
+#
+# Installs and configures the Neutron L3 service
+#
+# TODO: create ability to have multiple L3 services
+#
+# === Parameters
+#
+# [*package_ensure*]
+#   (optional) The state of the package
+#   Defaults to present
+#
+# [*enabled*]
+#   (optional) The state of the service
+#   Defaults to true
+#
+# [*manage_service*]
+#   (optional) Whether to start/stop the service
+#   Defaults to true
+#
+# [*debug*]
+#   (optional) Print debug info in logs
+#   Defaults to false
+#
+# [*external_network_bridge*]
+#   (optional) The name of the external bridge
+#   Defaults to br-ex
+#
+# [*use_namespaces*]
+#   (optional) Enable overlapping IPs / network namespaces
+#   Defaults to false
+#
+# [*interface_driver*]
+#   (optional) Driver to interface with neutron
+#   Defaults to OVSInterfaceDriver
+#
+# [*router_id*]
+#   (optional) The ID of the external router in neutron
+#   Defaults to blank
+#
+# [*gateway_external_network_id*]
+#   (optional) The ID of the external network in neutron
+#   Defaults to blank
+#
+# [*handle_internal_only_routers*]
+#   (optional) L3 Agent will handle non-external routers
+#   Defaults to true
+#
+# [*metadata_port*]
+#   (optional) The port of the metadata server
+#   Defaults to 9697
+#
+# [*send_arp_for_ha*]
+#   (optional) Send this many gratuitous ARPs for HA setup. Set it below or equal to 0
+#   to disable this feature.
+#   Defaults to 3
+#
+# [*periodic_interval*]
+#   (optional) seconds between re-sync routers' data if needed
+#   Defaults to 40
+#
+# [*periodic_fuzzy_delay*]
+#   (optional) seconds to start to sync routers' data after starting agent
+#   Defaults to 5
+#
+# [*enable_metadata_proxy*]
+#   (optional) can be set to False if the Nova metadata server is not available
+#   Defaults to True
+#
+# [*network_device_mtu*]
+#   (optional) The MTU size for the interfaces managed by the L3 agent
+#   Defaults to undef
+#   Should be deprecated in the next major release in favor of a global parameter
+#
+# [*router_delete_namespaces*]
+#   (optional) namespaces can be deleted cleanly on the host running the L3 agent
+#   Defaults to False
+#
+# [*ha_enabled*]
+#   (optional) Enabled or not HA for L3 agent.
+#   Defaults to false
+#
+# [*ha_vrrp_auth_type*]
+#   (optional) VRRP authentication type. Can be AH or PASS.
+#   Defaults to "PASS"
+#
+# [*ha_vrrp_auth_password*]
+#   (optional) VRRP authentication password. Required if ha_enabled = true.
+#   Defaults to undef
+#
+# [*ha_vrrp_advert_int*]
+#   (optional) The advertisement interval in seconds.
+#   Defaults to '2'
+#
+# [*agent_mode*]
+#   (optional) The working mode for the agent.
+#   'legacy': default behavior (without DVR)
+#   'dvr': enable DVR for an L3 agent running on compute node (DVR in production)
+#   'dvr_snat': enable DVR with centralized SNAT support (DVR for single-host, for testing only)
+#   Defaults to 'legacy'
+#
+# [*allow_automatic_l3agent_failover*]
+#   (optional) Automatically reschedule routers from offline L3 agents to online
+#   L3 agents.
+#   This is another way to run virtual routers in highly available way but with slow
+#   failover performances compared to Keepalived feature in Neutron L3 Agent.
+#   Defaults to 'False'
+#
+class neutron::agents::l3 (
+  $package_ensure                   = 'present',
+  $enabled                          = true,
+  $manage_service                   = true,
+  $debug                            = false,
+  $external_network_bridge          = 'br-ex',
+  $use_namespaces                   = true,
+  $interface_driver                 = 'neutron.agent.linux.interface.OVSInterfaceDriver',
+  $router_id                        = undef,
+  $gateway_external_network_id      = undef,
+  $handle_internal_only_routers     = true,
+  $metadata_port                    = '9697',
+  $send_arp_for_ha                  = '3',
+  $periodic_interval                = '40',
+  $periodic_fuzzy_delay             = '5',
+  $enable_metadata_proxy            = true,
+  $network_device_mtu               = undef,
+  $router_delete_namespaces         = false,
+  $ha_enabled                       = false,
+  $ha_vrrp_auth_type                = 'PASS',
+  $ha_vrrp_auth_password            = undef,
+  $ha_vrrp_advert_int               = '3',
+  $agent_mode                       = 'legacy',
+  $allow_automatic_l3agent_failover = false,
+) {
+
+  include neutron::params
+
+  Neutron_config<||>          ~> Service['neutron-l3']
+  Neutron_l3_agent_config<||> ~> Service['neutron-l3']
+
+  if $ha_enabled {
+    neutron_l3_agent_config {
+      'DEFAULT/ha_vrrp_auth_type':     value => $ha_vrrp_auth_type;
+      'DEFAULT/ha_vrrp_auth_password': value => $ha_vrrp_auth_password;
+      'DEFAULT/ha_vrrp_advert_int':    value => $ha_vrrp_advert_int;
+    }
+  }
+
+  neutron_l3_agent_config {
+    'DEFAULT/debug':                            value => $debug;
+    'DEFAULT/external_network_bridge':          value => $external_network_bridge;
+    'DEFAULT/use_namespaces':                   value => $use_namespaces;
+    'DEFAULT/interface_driver':                 value => $interface_driver;
+    'DEFAULT/router_id':                        value => $router_id;
+    'DEFAULT/gateway_external_network_id':      value => $gateway_external_network_id;
+    'DEFAULT/handle_internal_only_routers':     value => $handle_internal_only_routers;
+    'DEFAULT/metadata_port':                    value => $metadata_port;
+    'DEFAULT/send_arp_for_ha':                  value => $send_arp_for_ha;
+    'DEFAULT/periodic_interval':                value => $periodic_interval;
+    'DEFAULT/periodic_fuzzy_delay':             value => $periodic_fuzzy_delay;
+    'DEFAULT/enable_metadata_proxy':            value => $enable_metadata_proxy;
+    'DEFAULT/router_delete_namespaces':         value => $router_delete_namespaces;
+    'DEFAULT/agent_mode':                       value => $agent_mode;
+    'DEFAULT/allow_automatic_l3agent_failover': value => $allow_automatic_l3agent_failover;
+  }
+
+  if $network_device_mtu {
+    warning('The neutron::l3_agent::newtork_device_mtu parameter is deprecated, use neutron::newtork_device_mtu instead.')
+    neutron_l3_agent_config {
+      'DEFAULT/network_device_mtu':           value => $network_device_mtu;
+    }
+  } else {
+    warning('The neutron::l3_agent::newtork_device_mtu parameter is deprecated, use neutron::newtork_device_mtu instead.')
+    neutron_l3_agent_config {
+      'DEFAULT/network_device_mtu':           ensure => absent;
+    }
+  }
+
+  if $::neutron::params::l3_agent_package {
+    Package['neutron-l3'] -> Neutron_l3_agent_config<||>
+    package { 'neutron-l3':
+      ensure  => $package_ensure,
+      name    => $::neutron::params::l3_agent_package,
+      require => Package['neutron'],
+    }
+  } else {
+    # Some platforms (RedHat) does not provide a neutron L3 agent package.
+    # The neutron L3 agent config file is provided by the neutron package.
+    Package['neutron'] -> Neutron_l3_agent_config<||>
+  }
+
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
+  service { 'neutron-l3':
+    ensure  => $service_ensure,
+    name    => $::neutron::params::l3_agent_service,
+    enable  => $enabled,
+    require => Class['neutron'],
+  }
+}