#!/sbin/runscript # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 depend() { need net before puppet use dns logger } PORTS=( 18140 18141 18142 18143 ) checkconfig() { if [[ ! -d "${PUPPETMASTER_PID_DIR}" ]] ; then eerror "Please make sure PUPPETMASTER_PID_DIR is defined and points to a existing directory" return 1 fi local site_manifest="/etc/puppet/manifests/site.pp" [[ -n "${PUPPETMASTER_MANIFEST}" ]] && site_manifest="${PUPPETMASTER_MANIFEST}" if [ ! -f "${site_manifest}" ] ; then eerror "Please create ${site_manifest} before running puppet" return 1 fi return 0 } start() { checkconfig || return $? local options="" [[ -n "${PUPPETMASTER_MANIFEST}" ]] && options="${options} --manifest=${PUPPETMASTER_MANIFEST}" [[ -n "${PUPPETMASTER_LOG}" ]] && options="${options} --logdest=${PUPPETMASTER_LOG}" [[ -n "${PUPPETMASTER_EXTRA_OPTS}" ]] && options="${options} ${PUPPETMASTER_EXTRA_OPTS}" for ((i=0; i<${#PORTS[@]}; i++)); do ebegin "Starting puppetmaster on port ${PORTS[$i]}" start-stop-daemon --start --quiet --exec /usr/bin/puppetmasterd \ --pidfile=${PUPPETMASTER_PID_DIR}/puppetmasterd.${PORTS[$i]}.pid \ -- ${options} \ --pidfile=${PUPPETMASTER_PID_DIR}/puppetmasterd.${PORTS[$i]}.pid \ --servertype=mongrel \ --masterport="${PORTS[$i]}" a=$? || $a done eend $a "Failed to start puppetmaster" } stop() { for ((i=0; i<${#PORTS[@]}; i++)); do ebegin "Stopping puppetmaster on port ${PORTS[$i]}" start-stop-daemon --stop --quiet \ --pidfile ${PUPPETMASTER_PID_DIR}/puppetmasterd.${PORTS[$i]}.pid local ret=$? || $ret done eend ${ret} "Failed to stop puppetmaster" rm -f ${PUPPETMASTER_PID_DIR}/puppetmasterd.pid return ${ret} }