X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=3rdparty%2Fmodules%2Fneutron%2Fmanifests%2Fagents%2Fdhcp.pp;fp=3rdparty%2Fmodules%2Fneutron%2Fmanifests%2Fagents%2Fdhcp.pp;h=256d1bee305f68a3bfa687077d70cb1c3f3db545;hb=4631045ebb77ee8622f6fa09277a50c372bcc02e;hp=0000000000000000000000000000000000000000;hpb=3d4dc4fd9e59bd0e07646c99f6b356c7d9d859aa;p=dsa-puppet.git diff --git a/3rdparty/modules/neutron/manifests/agents/dhcp.pp b/3rdparty/modules/neutron/manifests/agents/dhcp.pp new file mode 100644 index 00000000..256d1bee --- /dev/null +++ b/3rdparty/modules/neutron/manifests/agents/dhcp.pp @@ -0,0 +1,160 @@ +# == Class: neutron::agents::dhcp +# +# Setups Neutron DHCP agent. +# +# === Parameters +# +# [*package_ensure*] +# (optional) Ensure state for package. Defaults to 'present'. +# +# [*enabled*] +# (optional) Enable state for service. Defaults to 'true'. +# +# [*manage_service*] +# (optional) Whether to start/stop the service +# Defaults to true +# +# [*debug*] +# (optional) Show debugging output in log. Defaults to false. +# +# [*state_path*] +# (optional) Where to store dnsmasq state files. This directory must be +# writable by the user executing the agent. Defaults to '/var/lib/neutron'. +# +# [*resync_interval*] +# (optional) The DHCP agent will resync its state with Neutron to recover +# from any transient notification or rpc errors. The interval is number of +# seconds between attempts. Defaults to 30. +# +# [*interface_driver*] +# (optional) Defaults to 'neutron.agent.linux.interface.OVSInterfaceDriver'. +# +# [*dhcp_driver*] +# (optional) Defaults to 'neutron.agent.linux.dhcp.Dnsmasq'. +# +# [*root_helper*] +# (optional) Defaults to 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf'. +# Addresses bug: https://bugs.launchpad.net/neutron/+bug/1182616 +# Note: This can safely be removed once the module only targets the Havana release. +# +# [*use_namespaces*] +# (optional) Allow overlapping IP (Must have kernel build with +# CONFIG_NET_NS=y and iproute2 package that supports namespaces). +# Defaults to true. +# +# [*dnsmasq_config_file*] +# (optional) Override the default dnsmasq settings with this file. +# Defaults to undef +# +# [*dhcp_delete_namespaces*] +# (optional) Delete namespace after removing a dhcp server +# Defaults to false. +# +# [*enable_isolated_metadata*] +# (optional) enable metadata support on isolated networks. +# Defaults to false. +# +# [*enable_metadata_network*] +# (optional) Allows for serving metadata requests coming from a dedicated metadata +# access network whose cidr is 169.254.169.254/16 (or larger prefix), and is +# connected to a Neutron router from which the VMs send metadata request. +# This option requires enable_isolated_metadata = True +# Defaults to false. +# +class neutron::agents::dhcp ( + $package_ensure = present, + $enabled = true, + $manage_service = true, + $debug = false, + $state_path = '/var/lib/neutron', + $resync_interval = 30, + $interface_driver = 'neutron.agent.linux.interface.OVSInterfaceDriver', + $dhcp_driver = 'neutron.agent.linux.dhcp.Dnsmasq', + $root_helper = 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf', + $use_namespaces = true, + $dnsmasq_config_file = undef, + $dhcp_delete_namespaces = false, + $enable_isolated_metadata = false, + $enable_metadata_network = false +) { + + include neutron::params + + Neutron_config<||> ~> Service['neutron-dhcp-service'] + Neutron_dhcp_agent_config<||> ~> Service['neutron-dhcp-service'] + + case $dhcp_driver { + /\.Dnsmasq/: { + Package[$::neutron::params::dnsmasq_packages] -> Package<| title == 'neutron-dhcp-agent' |> + ensure_packages($::neutron::params::dnsmasq_packages) + } + /^midonet.*/: { + ensure_packages($::neutron::params::midonet_server_package) + } + default: { + fail("Unsupported dhcp_driver ${dhcp_driver}") + } + } + + if (! $enable_isolated_metadata) and $enable_metadata_network { + fail('enable_metadata_network to true requires enable_isolated_metadata also enabled.') + } else { + neutron_dhcp_agent_config { + 'DEFAULT/enable_isolated_metadata': value => $enable_isolated_metadata; + 'DEFAULT/enable_metadata_network': value => $enable_metadata_network; + } + } + + # The DHCP agent loads both neutron.ini and its own file. + # This only lists config specific to the agent. neutron.ini supplies + # the rest. + neutron_dhcp_agent_config { + 'DEFAULT/debug': value => $debug; + 'DEFAULT/state_path': value => $state_path; + 'DEFAULT/resync_interval': value => $resync_interval; + 'DEFAULT/interface_driver': value => $interface_driver; + 'DEFAULT/dhcp_driver': value => $dhcp_driver; + 'DEFAULT/use_namespaces': value => $use_namespaces; + 'DEFAULT/root_helper': value => $root_helper; + 'DEFAULT/dhcp_delete_namespaces': value => $dhcp_delete_namespaces; + } + + if $dnsmasq_config_file { + neutron_dhcp_agent_config { + 'DEFAULT/dnsmasq_config_file': value => $dnsmasq_config_file; + } + } else { + neutron_dhcp_agent_config { + 'DEFAULT/dnsmasq_config_file': ensure => absent; + } + } + + if $::neutron::params::dhcp_agent_package { + Package['neutron'] -> Package['neutron-dhcp-agent'] + Package['neutron-dhcp-agent'] -> Neutron_config<||> + Package['neutron-dhcp-agent'] -> Neutron_dhcp_agent_config<||> + package { 'neutron-dhcp-agent': + ensure => $package_ensure, + name => $::neutron::params::dhcp_agent_package, + } + } else { + # Some platforms (RedHat) do not provide a neutron DHCP agent package. + # The neutron DHCP agent config file is provided by the neutron package. + Package['neutron'] -> Neutron_dhcp_agent_config<||> + } + + if $manage_service { + if $enabled { + $service_ensure = 'running' + } else { + $service_ensure = 'stopped' + } + } + + service { 'neutron-dhcp-service': + ensure => $service_ensure, + name => $::neutron::params::dhcp_agent_service, + enable => $enabled, + require => Class['neutron'], + } +}