Skip to content

Instantly share code, notes, and snippets.

@jtopjian
Last active December 28, 2015 13:19
Show Gist options
  • Save jtopjian/7506606 to your computer and use it in GitHub Desktop.
Save jtopjian/7506606 to your computer and use it in GitHub Desktop.
puppetmaster init script
#! /bin/sh
### BEGIN INIT INFO
# Provides: puppetmaster
# Required-Start: $network $named $remote_fs $syslog
# Required-Stop: $network $named $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/puppet
DAEMON_OPTS=""
NAME=master
DESC="puppet master"
test -x $DAEMON || exit 0
[ -r /etc/default/puppetmaster ] && . /etc/default/puppetmaster
. /lib/lsb/init-functions
if [ ! -d /var/run/puppet ]; then
mkdir -p /var/run/puppet
fi
chown puppet:puppet /var/run/puppet
mongrel_warning="The mongrel servertype is no longer built-in to Puppet. It
appears as though mongrel is being used, as the number of puppetmasters is
greater than one. Starting the puppetmaster service will not behave as expected
until this is resolved. Only the first port has been used in the service, and
only one puppetmaster has been started. These settings are defined in
/etc/default/puppetmaster"
# Warn about removed and unsupported mongrel servertype
if ([ -n "$PUPPETMASTERS" ] && [ ${PUPPETMASTERS} -gt 1 ]) || [ "${SERVERTYPE}" = "mongrel" ]; then
echo $mongrel_warning
echo
fi
is_true() {
if [ "x$1" = "xtrue" -o "x$1" = "xyes" -o "x$1" = "x0" ] ; then
return 0
else
return 1
fi
}
start_puppet_master() {
if is_true "$START" ; then
start-stop-daemon --start --quiet --pidfile /var/run/puppet/${NAME}.pid \
--startas $DAEMON -- $NAME $DAEMON_OPTS --masterport=$PORT
else
echo ""
echo "puppetmaster not configured to start, please edit /etc/default/puppetmaster to enable"
fi
}
stop_puppet_master() {
start-stop-daemon --stop --retry TERM/10/KILL/5 --quiet --oknodo --pidfile /var/run/puppet/${NAME}.pid
}
status_puppet_master() {
if ( ! type status_of_proc > /dev/null 2>&1 ) ; then
status_of_proc() {
local pidfile daemon name status
pidfile=
OPTIND=1
while getopts p: opt ; do
case "$opt" in
p) pidfile="$OPTARG";;
esac
done
shift $(($OPTIND - 1))
if [ -n "$pidfile" ]; then
pidfile="-p $pidfile"
fi
daemon="$1"
name="$2"
status="0"
pidofproc $pidfile $daemon >/dev/null || status="$?"
if [ "$status" = 0 ]; then
log_success_msg "$name is running"
return 0
elif [ "$status" = 4 ]; then
log_failure_msg "could not access PID file for $name"
return $status
else
log_failure_msg "$name is not running"
return $status
fi
}
fi
if is_true "$START" ; then
status_of_proc -p "/var/run/puppet/${NAME}.pid" "${DAEMON}" "${NAME}"
else
echo ""
echo "puppetmaster not configured to start"
return 1
fi
}
case "$1" in
start)
log_begin_msg "Starting $DESC"
start_puppet_master
log_end_msg $?
;;
stop)
log_begin_msg "Stopping $DESC"
stop_puppet_master
log_end_msg $?
;;
reload)
# Do nothing, as Puppetmaster rechecks its config automatically
;;
status)
status_puppet_master
;;
restart|force-reload)
log_begin_msg "Restarting $DESC"
stop_puppet_master
start_puppet_master
log_end_msg $?
;;
*)
echo "Usage: $0 {start|stop|status|restart|force-reload}" >&2
exit 1
;;
esac
# vim: tabstop=4:softtabstop=4:shiftwidth=4:expandtab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment