Skip to content
Browse files

First working version

  • Loading branch information...
0 parents commit 4471a64a3f7b841e20d1385a86e32e0dc49e9543 @codeinthehole committed Aug 7, 2012
Showing with 214 additions and 0 deletions.
  1. +40 −0 manifests/init.pp
  2. +174 −0 templates/init.d.sh.erb
40 manifests/init.pp
@@ -0,0 +1,40 @@
+class celeryd::base {
+ user { "celery":
+ ensure => present
+ }
+ file { "/var/log/celeryd":
+ ensure => directory,
+ owner => "celery",
+ require => User["celery"],
+ }
+ file { "/var/run/celeryd":
+ ensure => directory,
+ owner => "celery",
+ require => User["celery"],
+ }
+}
+
+class celeryd::service (
+ $conf_path,
+ $environment='vagrant') {
+ file { "/etc/init.d/celeryd-$environment":
+ ensure => present,
+ mode => "0755",
+ content => template("celeryd/init.d.sh.erb"),
+ require => Class["celeryd::base"],
+ }
+ service { "celeryd-$environment":
+ ensure => "running",
+ require => File["/etc/init.d/celeryd-$environment"],
+ }
+}
+
+class celeryd (
+ $conf_path,
+ $environment='vagrant') {
+ include celeryd::base
+ class { "celeryd::service":
+ conf_path => $conf_path,
+ environment => $environment
+ }
+}
174 templates/init.d.sh.erb
@@ -0,0 +1,174 @@
+#!/bin/bash
+# ============================================
+# celeryd - Starts the Celery worker daemon.
+# ============================================
+#
+# :Usage: /etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status}
+# :Configuration file: /etc/default/celeryd
+#
+# See http://docs.celeryq.org/en/latest/cookbook/daemonizing.html#init-script-celeryd
+
+
+### BEGIN INIT INFO
+# Provides: celeryd
+# Required-Start: $network $local_fs $remote_fs
+# Required-Stop: $network $local_fs $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: celery task worker daemon
+### END INIT INFO
+
+#set -e
+
+DEFAULT_PID_FILE="/var/run/celeryd@%n.pid"
+DEFAULT_LOG_FILE="/var/log/celeryd@%n.log"
+DEFAULT_LOG_LEVEL="INFO"
+DEFAULT_NODES="celery"
+DEFAULT_CELERYD="-m celery.bin.celeryd_detach"
+
+# /etc/init.d/celeryd: start and stop the celery task worker daemon.
+
+# ----------------------------------------------------
+# Changes from file from Celery repo
+
+CELERY_DEFAULTS="<%= @conf_path %>"
+
+test -f "$CELERY_DEFAULTS" && . "$CELERY_DEFAULTS"
+if [ -f "/etc/default/celeryd" ]; then
+ . /etc/default/celeryd
+fi
+
+if [ -n "$VIRTUALENV" ]; then
+ source $VIRTUALENV/bin/activate
+fi
+
+# ----------------------------------------------------
+
+
+CELERYD_PID_FILE=${CELERYD_PID_FILE:-${CELERYD_PIDFILE:-$DEFAULT_PID_FILE}}
+CELERYD_LOG_FILE=${CELERYD_LOG_FILE:-${CELERYD_LOGFILE:-$DEFAULT_LOG_FILE}}
+CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-${CELERYD_LOGLEVEL:-$DEFAULT_LOG_LEVEL}}
+CELERYD_MULTI=${CELERYD_MULTI:-"celeryd-multi"}
+CELERYD=${CELERYD:-$DEFAULT_CELERYD}
+CELERYCTL=${CELERYCTL:="celeryctl"}
+CELERYD_NODES=${CELERYD_NODES:-$DEFAULT_NODES}
+
+export CELERY_LOADER
+
+if [ -n "$2" ]; then
+ CELERYD_OPTS="$CELERYD_OPTS $2"
+fi
+
+CELERYD_LOG_DIR=`dirname $CELERYD_LOG_FILE`
+CELERYD_PID_DIR=`dirname $CELERYD_PID_FILE`
+if [ ! -d "$CELERYD_LOG_DIR" ]; then
+ mkdir -p $CELERYD_LOG_DIR
+fi
+if [ ! -d "$CELERYD_PID_DIR" ]; then
+ mkdir -p $CELERYD_PID_DIR
+fi
+
+# Extra start-stop-daemon options, like user/group.
+if [ -n "$CELERYD_USER" ]; then
+ DAEMON_OPTS="$DAEMON_OPTS --uid=$CELERYD_USER"
+ chown "$CELERYD_USER" $CELERYD_LOG_DIR $CELERYD_PID_DIR
+fi
+if [ -n "$CELERYD_GROUP" ]; then
+ DAEMON_OPTS="$DAEMON_OPTS --gid=$CELERYD_GROUP"
+ chgrp "$CELERYD_GROUP" $CELERYD_LOG_DIR $CELERYD_PID_DIR
+fi
+
+if [ -n "$CELERYD_CHDIR" ]; then
+ DAEMON_OPTS="$DAEMON_OPTS --workdir=\"$CELERYD_CHDIR\""
+fi
+
+
+check_dev_null() {
+ if [ ! -c /dev/null ]; then
+ echo "/dev/null is not a character device!"
+ exit 1
+ fi
+}
+
+ensure_dir() {
+ if [ -d "$1" ]; then
+ mkdir -p "$1"
+ chown $CELERYD_USER:$CELERYD_GROUP "$1"
+ chmod 02755 "$1"
+ fi
+}
+
+check_paths() {
+ ensure_dir "$(dirname $CELERYD_PID_FILE)"
+ ensure_dir "$(dirname $CELERYD_LOG_FILE)"
+}
+
+export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
+
+
+stop_workers () {
+ $CELERYD_MULTI stop $CELERYD_NODES --pidfile="$CELERYD_PID_FILE"
+}
+
+
+start_workers () {
+ $CELERYD_MULTI start $CELERYD_NODES $DAEMON_OPTS \
+ --pidfile="$CELERYD_PID_FILE" \
+ --logfile="$CELERYD_LOG_FILE" \
+ --loglevel="$CELERYD_LOG_LEVEL" \
+ --cmd="$CELERYD" \
+ $CELERYD_OPTS
+}
+
+
+restart_workers () {
+ $CELERYD_MULTI restart $CELERYD_NODES $DAEMON_OPTS \
+ --pidfile="$CELERYD_PID_FILE" \
+ --logfile="$CELERYD_LOG_FILE" \
+ --loglevel="$CELERYD_LOG_LEVEL" \
+ --cmd="$CELERYD" \
+ $CELERYD_OPTS
+}
+
+
+
+case "$1" in
+ start)
+ check_dev_null
+ check_paths
+ start_workers
+ ;;
+
+ stop)
+ check_dev_null
+ check_paths
+ stop_workers
+ ;;
+
+ reload|force-reload)
+ echo "Use restart"
+ ;;
+
+ status)
+ $CELERYCTL status $CELERYCTL_OPTS
+ ;;
+
+ restart)
+ check_dev_null
+ check_paths
+ restart_workers
+ ;;
+
+ try-restart)
+ check_dev_null
+ check_paths
+ restart_workers
+ ;;
+
+ *)
+ echo "Usage: /etc/init.d/celeryd {start|stop|restart|try-restart|kill}"
+ exit 1
+ ;;
+esac
+
+exit

0 comments on commit 4471a64

Please sign in to comment.
Something went wrong with that request. Please try again.