a080398821
Currently we restart all neutron services regardless of the config files being updated. This is the first step to improve that redundancy and update the notification to restart only a specific agent service when an agent config file is updated. Change-Id: Ibe22978383c2e1758d91b7bee545479e947829d0
244 lines
9.5 KiB
Puppet
244 lines
9.5 KiB
Puppet
# == 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 $facts['os_service_default'].
|
|
#
|
|
# [*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 $facts['os_service_default'].
|
|
#
|
|
# [*interface_driver*]
|
|
# (optional) The driver used to manage the virtual interface.
|
|
# Defaults to 'neutron.agent.linux.interface.OVSInterfaceDriver'.
|
|
#
|
|
# [*dhcp_driver*]
|
|
# (optional) Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*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.
|
|
#
|
|
# [*dnsmasq_config_file*]
|
|
# (optional) Override the default dnsmasq settings with this file.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*dnsmasq_dns_servers*]
|
|
# (optional) List of servers to use as dnsmasq forwarders.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*dnsmasq_base_log_dir*]
|
|
# (optional) base log dir for dnsmasq logging.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*dnsmasq_local_resolv*]
|
|
# (optional) Enables the dnsmasq service to provide name resolution for instances
|
|
# via DNS resolvers on the host running the DHCP agent.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*dnsmasq_lease_max*]
|
|
# (optional) Limit number of leases to prevent a denial-of-service.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*dnsmasq_enable_addr6_list*]
|
|
# (optional) Enable dhcp-host entry with list of addresses when port has
|
|
# multiple IPv6 addresses in the same subnet.
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*enable_isolated_metadata*]
|
|
# (optional) enable metadata support on isolated networks.
|
|
# Defaults to false.
|
|
#
|
|
# [*enable_force_metadata*]
|
|
# (optional) enable metadata support on all 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.
|
|
#
|
|
# [*dhcp_broadcast_reply*]
|
|
# (optional) Use broadcast in DHCP replies
|
|
# Defaults to $facts['os_service_default'].
|
|
#
|
|
# [*purge_config*]
|
|
# (optional) Whether to set only the specified config options
|
|
# in the dhcp config.
|
|
# Defaults to false.
|
|
#
|
|
# [*availability_zone*]
|
|
# (optional) The availability zone of the agent.
|
|
# Neutron will only schedule dhcp on the agent based on availability zone
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*ovs_integration_bridge*]
|
|
# (optional) Name of Open vSwitch bridge to use
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*ovsdb_connection*]
|
|
# (optional) The URI used to connect to the local OVSDB server
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*ovsdb_agent_ssl_key_file*]
|
|
# (optional) The SSL key file to use for Neutron agents to connect to OVSDB
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*ovsdb_agent_ssl_cert_file*]
|
|
# (optional) The SSL cert file to use for Neutron agents to connect to OVSDB
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*ovsdb_agent_ssl_ca_file*]
|
|
# (optional) The SSL CA cert file to use for Neutron agents to connect to OVSDB
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*report_interval*]
|
|
# (optional) Set the agent report interval. By default the global report
|
|
# interval in neutron.conf ([agent]/report_interval) is used. This parameter
|
|
# can be used to override the reporting interval for the dhcp-agent.
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
# [*rpc_response_max_timeout*]
|
|
# (Optional) Maximum seconds to wait for a response from an RPC call
|
|
# Defaults to $facts['os_service_default']
|
|
#
|
|
class neutron::agents::dhcp (
|
|
$package_ensure = present,
|
|
Boolean $enabled = true,
|
|
Boolean $manage_service = true,
|
|
$debug = $facts['os_service_default'],
|
|
$state_path = '/var/lib/neutron',
|
|
$resync_interval = $facts['os_service_default'],
|
|
$interface_driver = 'neutron.agent.linux.interface.OVSInterfaceDriver',
|
|
$dhcp_driver = $facts['os_service_default'],
|
|
$root_helper = 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf',
|
|
$dnsmasq_config_file = $facts['os_service_default'],
|
|
$dnsmasq_dns_servers = $facts['os_service_default'],
|
|
$dnsmasq_base_log_dir = $facts['os_service_default'],
|
|
$dnsmasq_local_resolv = $facts['os_service_default'],
|
|
$dnsmasq_lease_max = $facts['os_service_default'],
|
|
$dnsmasq_enable_addr6_list = $facts['os_service_default'],
|
|
Boolean $enable_isolated_metadata = false,
|
|
Boolean $enable_force_metadata = false,
|
|
Boolean $enable_metadata_network = false,
|
|
$dhcp_broadcast_reply = $facts['os_service_default'],
|
|
Boolean $purge_config = false,
|
|
$availability_zone = $facts['os_service_default'],
|
|
$ovs_integration_bridge = $facts['os_service_default'],
|
|
$ovsdb_connection = $facts['os_service_default'],
|
|
$ovsdb_agent_ssl_key_file = $facts['os_service_default'],
|
|
$ovsdb_agent_ssl_cert_file = $facts['os_service_default'],
|
|
$ovsdb_agent_ssl_ca_file = $facts['os_service_default'],
|
|
$report_interval = $facts['os_service_default'],
|
|
$rpc_response_max_timeout = $facts['os_service_default'],
|
|
) {
|
|
|
|
include neutron::deps
|
|
include neutron::params
|
|
|
|
if (! ($enable_isolated_metadata or $enable_force_metadata)) and $enable_metadata_network {
|
|
fail('enable_metadata_network to true requires enable_isolated_metadata or enable_force_metadata also enabled.')
|
|
}
|
|
|
|
neutron_dhcp_agent_config {
|
|
'DEFAULT/enable_isolated_metadata': value => $enable_isolated_metadata;
|
|
'DEFAULT/force_metadata': value => $enable_force_metadata;
|
|
'DEFAULT/enable_metadata_network': value => $enable_metadata_network;
|
|
}
|
|
|
|
resources { 'neutron_dhcp_agent_config':
|
|
purge => $purge_config,
|
|
}
|
|
|
|
# The DHCP agent loads both neutron.conf and its own file.
|
|
# This only lists config specific to the agent. neutron.conf 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/root_helper': value => $root_helper;
|
|
'DEFAULT/dhcp_broadcast_reply': value => $dhcp_broadcast_reply;
|
|
'DEFAULT/dnsmasq_config_file': value => $dnsmasq_config_file;
|
|
'DEFAULT/dnsmasq_dns_servers': value => join(any2array($dnsmasq_dns_servers), ',');
|
|
'DEFAULT/dnsmasq_base_log_dir': value => $dnsmasq_base_log_dir;
|
|
'DEFAULT/dnsmasq_local_resolv': value => $dnsmasq_local_resolv;
|
|
'DEFAULT/dnsmasq_lease_max': value => $dnsmasq_lease_max;
|
|
'DEFAULT/dnsmasq_enable_addr6_list': value => $dnsmasq_enable_addr6_list;
|
|
'agent/availability_zone': value => $availability_zone;
|
|
'agent/report_interval': value => $report_interval;
|
|
'DEFAULT/rpc_response_max_timeout': value => $rpc_response_max_timeout;
|
|
}
|
|
|
|
if $ovsdb_connection =~ /^ssl:/ {
|
|
$req_ssl_opts = {
|
|
'ovsdb_agent_ssl_key_file' => $ovsdb_agent_ssl_key_file,
|
|
'ovsdb_agent_ssl_cert_file' => $ovsdb_agent_ssl_cert_file,
|
|
'ovsdb_agent_ssl_ca_file' => $ovsdb_agent_ssl_ca_file
|
|
}
|
|
$req_ssl_opts.each |$opts| {
|
|
if !$opts[1] or is_service_default($opts[1]) {
|
|
fail(
|
|
"${opts[0]} must be provided when using an SSL ovsdb_connection URI"
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
neutron_dhcp_agent_config {
|
|
'ovs/ovsdb_connection': value => $ovsdb_connection;
|
|
'ovs/integration_bridge': value => $ovs_integration_bridge;
|
|
'ovs/ssl_key_file': value => $ovsdb_agent_ssl_key_file;
|
|
'ovs/ssl_cert_file': value => $ovsdb_agent_ssl_cert_file;
|
|
'ovs/ssl_ca_cert_file': value => $ovsdb_agent_ssl_ca_file;
|
|
}
|
|
|
|
if $::neutron::params::dhcp_agent_package {
|
|
package { 'neutron-dhcp-agent':
|
|
ensure => $package_ensure,
|
|
name => $::neutron::params::dhcp_agent_package,
|
|
tag => ['openstack', 'neutron-package'],
|
|
}
|
|
}
|
|
|
|
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,
|
|
tag => 'neutron-service',
|
|
}
|
|
Neutron_dhcp_agent_config<||> ~> Service['neutron-dhcp-service']
|
|
}
|
|
}
|