diff --git a/manifests/init.pp b/manifests/init.pp index 649b48f..dc8259f 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -10,6 +10,9 @@ # [*user*] # The user to run sickbeard service as. Default: sickbeard # +# [*use_daemon*] +# Whether or not to start sickbeard as a daemon +# # === Examples # # include sickbeard @@ -25,6 +28,8 @@ $port = '8081', $login_user = '', $login_pass = '', + $use_daemon = true, + $data_dir = undef ) { # Install required dependencies. Doing it this way to get around conflicts @@ -66,16 +71,25 @@ file { '/etc/init.d/sickbeard': ensure => file, - content => template('sickbeard/ubuntu-init-sickbeard.erb'), + content => $use_daemon ? { + true => template('sickbeard/init.ubuntu.erb'), + false => template('sickbeard/ubuntu-init-sickbeard.erb') }, mode => '0755', require => Vcsrepo[$install_dir], + notify => Service["sickbeard"] + } + + if $use_daemon { + file { '/etc/default/sickbeard': + content => template('sickbeard/default.sickbeard.erb') + } } service {'sickbeard': ensure => running, enable => true, hasrestart => true, - hasstatus => false, + hasstatus => $use_daemon, require => File['/etc/init.d/sickbeard'], } diff --git a/templates/default.sickbeard.erb b/templates/default.sickbeard.erb new file mode 100644 index 0000000..058a1f5 --- /dev/null +++ b/templates/default.sickbeard.erb @@ -0,0 +1,20 @@ +## Don't edit this file +## Edit user configuation in /etc/default/sickbeard to change +## +## SB_USER= #$RUN_AS, username to run sickbeard under, the default is sickbeard +## SB_HOME= #$APP_PATH, the location of SickBeard.py, the default is /opt/sickbeard +## SB_DATA= #$DATA_DIR, the location of sickbeard.db, cache, logs, the default is /opt/sickbeard +## SB_PIDFILE= #$PID_FILE, the location of sickbeard.pid, the default is /var/run/sickbeard/sickbeard.pid +## PYTHON_BIN= #$DAEMON, the location of the python binary, the default is /usr/bin/python +## SB_OPTS= #$EXTRA_DAEMON_OPTS, extra cli option for sickbeard, i.e. " --config=/home/sickbeard/config.ini" +## SSD_OPTS= #$EXTRA_SSD_OPTS, extra start-stop-daemon option like " --group=users" +## +## EXAMPLE if want to run as different user +## add SB_USER=username to /etc/default/sickbeard +## otherwise default sickbeard is used + +SB_USER=<%= @user %> +SB_HOME=<%= @install_dir %> +<% if @data_dir %> +SB_DATA=<%= @data_dir %> +<% end %> \ No newline at end of file diff --git a/templates/init.ubuntu.erb b/templates/init.ubuntu.erb new file mode 100755 index 0000000..5386625 --- /dev/null +++ b/templates/init.ubuntu.erb @@ -0,0 +1,145 @@ +#!/bin/sh +# +### BEGIN INIT INFO +# Provides: sickbeard +# Required-Start: $local_fs $network $remote_fs +# Required-Stop: $local_fs $network $remote_fs +# Should-Start: $NetworkManager +# Should-Stop: $NetworkManager +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts instance of Sick Beard +# Description: starts instance of Sick Beard using start-stop-daemon +### END INIT INFO + +# Source SickBeard configuration +if [ -f /etc/default/sickbeard ]; then + . /etc/default/sickbeard +else + echo "/etc/default/sickbeard not found using default settings."; +fi + +# Script name +NAME=sickbeard + +# App name +DESC=SickBeard + +## Don't edit this file +## Edit user configuation in /etc/default/sickbeard to change +## +## SB_USER= #$RUN_AS, username to run sickbeard under, the default is sickbeard +## SB_HOME= #$APP_PATH, the location of SickBeard.py, the default is /opt/sickbeard +## SB_DATA= #$DATA_DIR, the location of sickbeard.db, cache, logs, the default is /opt/sickbeard +## SB_PIDFILE= #$PID_FILE, the location of sickbeard.pid, the default is /var/run/sickbeard/sickbeard.pid +## PYTHON_BIN= #$DAEMON, the location of the python binary, the default is /usr/bin/python +## SB_OPTS= #$EXTRA_DAEMON_OPTS, extra cli option for sickbeard, i.e. " --config=/home/sickbeard/config.ini" +## SSD_OPTS= #$EXTRA_SSD_OPTS, extra start-stop-daemon option like " --group=users" +## +## EXAMPLE if want to run as different user +## add SB_USER=username to /etc/default/sickbeard +## otherwise default sickbeard is used + +## The defaults +# Run as username +RUN_AS=${SB_USER-sickbeard} + +# Path to app SB_HOME=path_to_app_SickBeard.py +APP_PATH=${SB_HOME-/opt/sickbeard} + +# Data directory where sickbeard.db, cache and logs are stored +DATA_DIR=${SB_DATA-/opt/sickbeard} + +# Path to store PID file +PID_FILE=${SB_PIDFILE-/var/run/sickbeard/sickbeard.pid} + +# path to python bin +DAEMON=${PYTHON_BIN-/usr/bin/python} + +# Extra daemon option like: SB_OPTS=" --config=/home/sickbeard/config.ini" +EXTRA_DAEMON_OPTS=${SB_OPTS-} + +# Extra start-stop-daemon option like START_OPTS=" --group=users" +EXTRA_SSD_OPTS=${SSD_OPTS-} +## + +PID_PATH=`dirname $PID_FILE` +DAEMON_OPTS=" SickBeard.py -q --daemon --nolaunch --pidfile=${PID_FILE} --datadir=${DATA_DIR} ${EXTRA_DAEMON_OPTS}" + +## + +test -x $DAEMON || exit 0 + +set -e + +# Create PID directory if not exist and ensure the SickBeard user can write to it +if [ ! -d $PID_PATH ]; then + mkdir -p $PID_PATH + chown $RUN_AS $PID_PATH +fi + +if [ ! -d $DATA_DIR ]; then + mkdir -p $DATA_DIR + chown $RUN_AS $DATA_DIR +fi + +if [ -e $PID_FILE ]; then + PID=`cat $PID_FILE` + if ! kill -0 $PID > /dev/null 2>&1; then + echo "Removing stale $PID_FILE" + rm $PID_FILE + fi +fi + +case "$1" in + start) + echo "Starting $DESC" + start-stop-daemon -d $APP_PATH -c $RUN_AS $EXTRA_SSD_OPTS --start --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS + ;; + + stop) + echo "Stopping $DESC" + start-stop-daemon --stop --pidfile $PID_FILE --retry 15 + ;; + + restart|force-reload) + echo "Restarting $DESC" + start-stop-daemon --stop --pidfile $PID_FILE --retry 15 + start-stop-daemon -d $APP_PATH -c $RUN_AS $EXTRA_SSD_OPTS --start --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS + ;; + + status) + # Use LSB function library if it exists + if [ -f /lib/lsb/init-functions ]; then + . /lib/lsb/init-functions + + if [ -e $PID_FILE ]; then + status_of_proc -p $PID_FILE "$DAEMON" "$NAME" && exit 0 || exit $? + else + log_daemon_msg "$NAME is not running" + exit 3 + fi + + else + # Use basic functions + if [ -e $PID_FILE ]; then + PID=`cat $PID_FILE` + if kill -0 $PID > /dev/null 2>&1; then + echo " * $NAME is running" + exit 0 + fi + else + echo " * $NAME is not running" + exit 3 + fi + fi + ;; + + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; +esac + +exit 0 \ No newline at end of file