# == 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'], } }