Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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'],
}

Expand Down
20 changes: 20 additions & 0 deletions templates/default.sickbeard.erb
Original file line number Diff line number Diff line change
@@ -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 %>
145 changes: 145 additions & 0 deletions templates/init.ubuntu.erb
Original file line number Diff line number Diff line change
@@ -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