Ensure the rabbit-fence daemon started and respawned

W/o this fix, if the daemon crashed, it
would remain stopped. Also, the rabbit fence
daemon will crash on start, when there is no
/var/run/rabbitmq piddir exist.

The solution is
* add the respawn option to
the daemon's upstart (TODO for Centos inittab)
* and ensure the piddir
created by upstart/init.d before starting the daemon.

This also requires to add the rabbitmq and
fuel-rabbit-fence packages as a dependency.

Closes-bug: #1456791

Change-Id: I4e71eb9e4aa4ff3b877aa89a37d82215740aaeab
Signed-off-by: Bogdan Dobrelya <bdobrelia@mirantis.com>
This commit is contained in:
Vladimir Kuklin 2015-05-21 20:21:42 +03:00
parent fa448a62a9
commit 6e6d1cb23c
6 changed files with 28 additions and 12 deletions

View File

@ -3,4 +3,12 @@ description "RabbitMQ-fence daemon"
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 10 5
pre-start script
mkdir -p /var/run/rabbitmq
chown -R rabbitmq /var/run/rabbitmq
end script
exec /usr/bin/rabbit-fence.py

View File

@ -13,9 +13,10 @@ prog="rabbit-fence"
script="/usr/bin/${prog}.py"
piddir="/var/run/rabbitmq"
pidfile="${piddir}/${prog}.pid"
user="rabbitmq"
[ -x $script ] || exit 0
[ -d $piddir ] || exit 0
[ -d $piddir ] || (mkdir -p $piddir; chown -R $user $piddir)
start() {
exec $script

View File

@ -3,4 +3,12 @@ description "RabbitMQ-fence daemon"
start on runlevel [2345]
stop on runlevel [016]
respawn
respawn limit 10 5
pre-start script
mkdir -p /var/run/rabbitmq
chown -R rabbitmq /var/run/rabbitmq
end script
exec /usr/bin/rabbit-fence.py

View File

@ -20,18 +20,12 @@ class cluster::rabbitmq_fence(
$packages = ['dbus', 'dbus-python',
'pygobject2', 'python-daemon' ]
$dbus_service_name = 'messagebus'
$init_name = '/etc/init.d/rabbit-fence'
$init_source = 'puppet:///modules/cluster/rabbit-fence.init'
$init_mode = '0755'
$service_name = 'rabbit-fence'
}
'Debian': {
$packages = [ 'python-gobject', 'python-gobject-2',
'python-dbus', 'python-daemon' ]
$dbus_service_name = 'dbus'
$init_name = '/etc/init/rabbit-fence.conf'
$init_source = 'puppet:///modules/cluster/rabbit-fence.upstart'
$init_mode = '0644'
$service_name = 'fuel-rabbit-fence'
}
default: {
@ -51,6 +45,8 @@ class cluster::rabbitmq_fence(
hasrestart => true,
}
package { $packages: } ->
service { $dbus_service_name:
ensure => running,
enable => true,
@ -61,10 +57,12 @@ class cluster::rabbitmq_fence(
enable => true,
} ->
package { 'fuel-rabbit-fence': } ->
service { 'rabbit-fence':
name => $service_name,
enable => $enabled,
ensure => $enabled ? { true => running, false => stopped }
name => $service_name,
enable => $enabled,
ensure => $enabled ? { true => running, false => stopped },
require => Package['rabbitmq-server'],
}
if $::osfamily == 'Debian' {

View File

@ -1,6 +1,6 @@
notice('MODULAR: fuel_pkgs.pp')
$fuel_packages=['fuel-ha-utils','fuel-misc', 'fuel-rabbit-fence']
$fuel_packages=['fuel-ha-utils','fuel-misc']
notify{"this is the place where ${fuel_packages} should be installed":}
#FIXME(algarendil): remove this if when we switch to pkg-based stuff
if $::fuel_pkgs_exist == 'true'

View File

@ -13,9 +13,10 @@ prog="rabbit-fence"
script="/usr/bin/${prog}.py"
piddir="/var/run/rabbitmq"
pidfile="${piddir}/${prog}.pid"
user="rabbitmq"
[ -x $script ] || exit 0
[ -d $piddir ] || exit 0
[ -d $piddir ] || (mkdir -p $piddir; chown -R $user $piddir)
start() {
exec $script