diff --git a/debian/repmgr.repmgrd.default b/debian/repmgr.repmgrd.default index 1eb55921..182a278d 100644 --- a/debian/repmgr.repmgrd.default +++ b/debian/repmgr.repmgrd.default @@ -1,4 +1,3 @@ -#!/bin/sh # default settings for repmgrd. This file is source by /bin/sh from # /etc/init.d/repmgrd @@ -6,13 +5,14 @@ # valid values: yes/no REPMGRD_ENABLED=no -# Options for repmgrd -REPMGRD_OPTS="" +# Options for repmgrd (required) +#REPMGRD_OPTS="--config_file /path/to/repmgr.conf" + +# User to run repmgrd as +#REPMGRD_USER=postgres # repmgrd binary -REPMGR_BIN="/usr/bin/repmgr" +#REPMGR_BIN=/usr/bin/repmgr # pid file -REPMGR_PIDFILE="/var/run/repmgrd.pid" - - +#REPMGR_PIDFILE=/var/run/repmgrd.pid diff --git a/debian/repmgr.repmgrd.init b/debian/repmgr.repmgrd.init index 2473c2c9..bf7eb73b 100644 --- a/debian/repmgr.repmgrd.init +++ b/debian/repmgr.repmgrd.init @@ -1,53 +1,100 @@ #!/bin/sh ### BEGIN INIT INFO # Provides: repmgrd -# Required-Start: $local_fs $remote_fs $network $syslog $postgresql -# Required-Stop: $local_fs $remote_fs $network $syslog $postgresql -# Should-Start: $syslog $postgresql -# Should-Start: $syslog $postgresql +# Required-Start: $local_fs $remote_fs $network $syslog postgresql +# Required-Stop: $local_fs $remote_fs $network $syslog postgresql +# Should-Start: $syslog postgresql # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop repmgrd +# Description: Enable repmgrd replication management and monitoring daemon for PostgreSQL ### END INIT INFO set -e -if test -f /etc/default/repmgrd; then - . /etc/default/repmgrd -fi +DESC="PostgreSQL replication management and monitoring daemon" +NAME=repmgrd -if [ -z "$REPMGRD_BIN" ]; then - REPMGRD_BIN="/usr/bin/repmgrd" -fi +REPMGRD_ENABLED=no +REPMGRD_OPTS= +REPMGRD_USER=postgres +REPMGRD_BIN=/usr/bin/repmgrd +REPMGRD_PIDFILE=/var/run/repmgrd.pid -if [ -z "$REPMGRD_PIDFILE" ]; then - REPMGRD_PIDFILE="/var/run/repmgrd.pid" -fi +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME test -x $REPMGRD_BIN || exit 0 -case "$REPMGRD_ENABLE" in - [Nn]*) +case "$REPMGRD_ENABLED" in + [Yy]*) + break + ;; + *) exit 0 ;; esac +# Define LSB log_* functions. +. /lib/lsb/init-functions + +if [ -z "$REPMGRD_OPTS" ] +then + log_warning_msg "Not starting $NAME, REPMGRD_OPTS not set in /etc/default/$NAME" + exit 0 +fi + +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # other if daemon could not be started or a failure occured + start-stop-daemon --start --quiet --chuid $REPMGRD_USER --make-pidfile --pidfile $REPMGRD_PIDFILE --exec $REPMGRD_BIN -- $REPMGRD_OPTS +} + +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # other if daemon could not be stopped or a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $REPMGRD_PIDFILE --exec $REPMGRD_BIN +} + case "$1" in - start) - start-stop-daemon --start --quiet --make-pidfile --pidfile $REPMGRD_PIDFILE --exec $REPMGRD_BIN $REPMGRD_OPTS - ;; + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already started" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac - stop) - start-stop-daemon --stop --oknodo --quiet --pidfile $REPMGRD_PIDFILE ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0) log_end_msg 0 ;; + 1) log_progress_msg "already stopped" + log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac - restart) - $0 stop && $0 start || exit 1 ;; - - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 + restart|force-reload) + $0 stop + $0 start + ;; + status) + status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2 + exit 3 ;; esac