Adding manage_service parameter to all services

When set to false, enables puppet to configure a service without
starting/stopping it on each run.  This may be necessary when
using an external clustering system (Corosync/Pacemaker, for
example).  Defaults to true.

Change-Id: Ia5b36d9e03bfc4905394bba4fb9873750664b118
This commit is contained in:
Doug Schaapveld 2014-01-15 22:52:03 -06:00
parent 3c395605db
commit c87308b4a9
17 changed files with 220 additions and 46 deletions

View File

@ -0,0 +1,47 @@
# Example: managing neutron controller services with pacemaker
#
# By setting enabled to false, these services will not be started at boot. By setting
# manage_service to false, puppet will not kill these services on every run. This
# allows the Pacemaker resource manager to dynamically determine on which node each
# service should run.
#
# The puppet commands below would ideally be applied to at least three nodes.
#
# Note that neutron-server is associated with the virtual IP address as
# it is called from external services. The remaining services connect to the
# database and/or message broker independently.
#
# Example pacemaker resource configuration commands (configured once per cluster):
#
# sudo pcs resource create neutron_vip ocf:heartbeat:IPaddr2 params ip=192.0.2.3 \
# cidr_netmask=24 op monitor interval=10s
#
# sudo pcs resource create neutron_server_service lsb:neutron-server
# sudo pcs resource create neutron_dhcp_agent_service lsb:neutron-dhcp-agent
# sudo pcs resource create neutron_l3_agent_service lsb:neutron-l3-agent
#
# sudo pcs constraint colocation add neutron_server_service with neutron_vip
class { 'neutron':
verbose => true,
allow_overlapping_ips => true,
service_plugins => [ 'dhcp', 'l3' ]
}
class { 'neutron::server':
enabled => false,
manage_service => false,
keystone_password => 'password',
connection => 'mysql://neutron:password@192.168.1.1/neutron',
}
class { 'neutron::agents::dhcp':
enabled => false,
manage_service => false,
}
class { 'neutron::agents::l3':
enabled => false,
manage_service => false,
}

View File

@ -10,6 +10,10 @@
# [*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.
#
@ -60,6 +64,7 @@
class neutron::agents::dhcp (
$package_ensure = present,
$enabled = true,
$manage_service = true,
$debug = false,
$state_path = '/var/lib/neutron',
$resync_interval = 30,
@ -135,14 +140,16 @@ class neutron::agents::dhcp (
Package['neutron'] -> Neutron_dhcp_agent_config<||>
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-dhcp-service':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::dhcp_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -14,6 +14,10 @@
# (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
@ -74,6 +78,7 @@
class neutron::agents::l3 (
$package_ensure = 'present',
$enabled = true,
$manage_service = true,
$debug = false,
$external_network_bridge = 'br-ex',
$use_namespaces = true,
@ -134,14 +139,16 @@ class neutron::agents::l3 (
Package['neutron'] -> Neutron_l3_agent_config<||>
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-l3':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::l3_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -10,6 +10,10 @@
# [*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.
#
@ -35,6 +39,7 @@
class neutron::agents::lbaas (
$package_ensure = present,
$enabled = true,
$manage_service = true,
$debug = false,
$interface_driver = 'neutron.agent.linux.interface.OVSInterfaceDriver',
$device_driver = 'neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver',
@ -45,7 +50,7 @@ class neutron::agents::lbaas (
include neutron::params
Neutron_config<||> ~> Service['neutron-lbaas-service']
Neutron_config<||> ~> Service['neutron-lbaas-service']
Neutron_lbaas_agent_config<||> ~> Service['neutron-lbaas-service']
case $device_driver {
@ -86,14 +91,16 @@ class neutron::agents::lbaas (
Package['neutron'] -> Neutron_lbaas_agent_config<||>
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-lbaas-service':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::lbaas_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -19,11 +19,16 @@
# [*enable*]
# (optional) Enable state for service. Defaults to 'true'.
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
class neutron::agents::linuxbridge (
$physical_interface_mappings,
$firewall_driver = 'neutron.agent.linux.iptables_firewall.IptablesFirewallDriver',
$package_ensure = 'present',
$enable = true
$enable = true,
$manage_service = true
) {
include neutron::params
@ -53,17 +58,19 @@ class neutron::agents::linuxbridge (
}
}
if $enable {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
neutron_plugin_linuxbridge {
'LINUX_BRIDGE/physical_interface_mappings': value => $physical_interface_mappings;
'SECURITYGROUP/firewall_driver': value => $firewall_driver;
}
if $manage_service {
if $enable {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-plugin-linuxbridge-service':
ensure => $service_ensure,
name => $::neutron::params::linuxbridge_agent_service,

View File

@ -16,6 +16,10 @@
# [*enabled*]
# State of the service. Defaults to true.
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*debug*]
# Debug. Defaults to false.
#
@ -51,6 +55,7 @@ class neutron::agents::metadata (
$shared_secret,
$package_ensure = 'present',
$enabled = true,
$manage_service = true,
$debug = false,
$auth_tenant = 'services',
$auth_user = 'neutron',
@ -90,14 +95,16 @@ class neutron::agents::metadata (
}
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-metadata':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::metadata_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -27,6 +27,10 @@
# [*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.
#
@ -50,6 +54,7 @@
class neutron::agents::metering (
$package_ensure = present,
$enabled = true,
$manage_service = true,
$debug = false,
$interface_driver = 'neutron.agent.linux.interface.OVSInterfaceDriver',
$use_namespaces = true,
@ -59,7 +64,7 @@ class neutron::agents::metering (
include neutron::params
Neutron_config<||> ~> Service['neutron-metering-service']
Neutron_config<||> ~> Service['neutron-metering-service']
Neutron_metering_agent_config<||> ~> Service['neutron-metering-service']
# The metering agent loads both neutron.ini and its own file.
@ -87,14 +92,16 @@ class neutron::agents::metering (
Package['neutron'] -> Neutron_metering_agent_config<||>
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-metering-service':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::metering_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -27,6 +27,10 @@
# [*enabled*]
# (optional) Enable state for service. Defaults to 'true'.
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*vpn_device_driver*]
# (optional) Defaults to 'neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver'.
#
@ -36,13 +40,14 @@
class neutron::agents::vpnaas (
$package_ensure = present,
$enabled = true,
$manage_service = true,
$vpn_device_driver = 'neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver',
$ipsec_status_check_interval = '60'
) {
include neutron::params
Neutron_config<||> ~> Service['neutron-vpnaas-service']
Neutron_config<||> ~> Service['neutron-vpnaas-service']
Neutron_vpnaas_agent_config<||> ~> Service['neutron-vpnaas-service']
case $vpn_device_driver {
@ -79,14 +84,16 @@ class neutron::agents::vpnaas (
Package['neutron'] -> Neutron_vpnaas_agent_config<||>
}
if $enabled {
$ensure = 'running'
} else {
$ensure = 'stopped'
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-vpnaas-service':
ensure => $ensure,
ensure => $service_ensure,
name => $::neutron::params::vpnaas_agent_service,
enable => $enabled,
require => Class['neutron'],

View File

@ -12,6 +12,10 @@
# (optional) The state of the service
# Defaults to true
#
# [*manage_service*]
# (optional) Whether to start/stop the service
# Defaults to true
#
# [*log_file*]
# REMOVED: Use log_file of neutron class instead.
#
@ -136,6 +140,7 @@
class neutron::server (
$package_ensure = 'present',
$enabled = true,
$manage_service = true,
$auth_password = false,
$auth_type = 'keystone',
$auth_host = 'localhost',
@ -272,12 +277,6 @@ class neutron::server (
'database/max_retries': value => $database_max_retries_real;
}
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
if ($::neutron::params::server_package) {
Package['neutron-server'] -> Neutron_api_config<||>
Package['neutron-server'] -> Neutron_config<||>
@ -352,6 +351,14 @@ class neutron::server (
}
if $manage_service {
if $enabled {
$service_ensure = 'running'
} else {
$service_ensure = 'stopped'
}
}
service { 'neutron-server':
ensure => $service_ensure,
name => $::neutron::params::server_service,

View File

@ -72,6 +72,15 @@ describe 'neutron::agents::dhcp' do
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-dhcp-service').without_ensure
end
end
context 'when enabling isolated metadata only' do
before :each do
params.merge!(:enable_isolated_metadata => true, :enable_metadata_network => false)

View File

@ -75,6 +75,14 @@ describe 'neutron::agents::l3' do
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-l3').without_ensure
end
end
end
shared_examples_for 'neutron l3 agent with network_device_mtu specified' do

View File

@ -63,6 +63,15 @@ describe 'neutron::agents::lbaas' do
:require => 'Class[Neutron]'
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-lbaas-service').without_ensure
end
end
end
shared_examples_for 'haproxy lbaas_driver' do

View File

@ -27,6 +27,15 @@ describe 'neutron::agents::linuxbridge' do
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-plugin-linuxbridge-service').without_ensure
end
end
it 'configures linuxbridge_conf.ini' do
should contain_neutron_plugin_linuxbridge('LINUX_BRIDGE/physical_interface_mappings').with(
:value => params[:physical_interface_mappings]

View File

@ -35,6 +35,15 @@ describe 'neutron::agents::metadata' do
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-metadata').without_ensure
end
end
it 'configures metadata_agent.ini' do
should contain_neutron_metadata_agent_config('DEFAULT/debug').with(:value => params[:debug])
should contain_neutron_metadata_agent_config('DEFAULT/auth_url').with(:value => params[:auth_url])

View File

@ -81,6 +81,15 @@ describe 'neutron::agents::metering' do
:require => 'Class[Neutron]'
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-metering-service').without_ensure
end
end
end
context 'on Ubuntu platforms' do

View File

@ -74,6 +74,15 @@ describe 'neutron::agents::vpnaas' do
:require => 'Class[Neutron]'
)
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-vpnaas-service').without_ensure
end
end
end
shared_examples_for 'openswan vpnaas_driver' do

View File

@ -85,6 +85,15 @@ describe 'neutron::server' do
should contain_neutron_config('DEFAULT/report_interval').with_value('30')
should contain_neutron_config('DEFAULT/router_scheduler_driver').with_value('neutron.scheduler.l3_agent_scheduler.ChanceScheduler')
end
context 'with manage_service as false' do
before :each do
params.merge!(:manage_service => false)
end
it 'should not start/stop service' do
should contain_service('neutron-server').without_ensure
end
end
end
shared_examples_for 'a neutron server with auth_admin_prefix set' do