]> git.donarmstrong.com Git - dsa-puppet.git/commitdiff
the debian init script has a bug
authorStephen Gran <steve@lobefin.net>
Sat, 7 Jul 2012 10:34:01 +0000 (11:34 +0100)
committerStephen Gran <steve@lobefin.net>
Sat, 7 Jul 2012 10:34:56 +0000 (11:34 +0100)
Signed-off-by: Stephen Gran <steve@lobefin.net>
modules/nagios/files/nagios3.init [new file with mode: 0755]
modules/nagios/manifests/server.pp

diff --git a/modules/nagios/files/nagios3.init b/modules/nagios/files/nagios3.init
new file mode 100755 (executable)
index 0000000..e650839
--- /dev/null
@@ -0,0 +1,249 @@
+#! /bin/sh
+#              Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#              Modified for Debian GNU/Linux
+#              by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#               Clamav version by Magnus Ekdahl <magnus@debian.org>
+#              Nagios version by Sean Finney <seanius@debian.org> and probably others
+#              nagios2 version by Marc Haber <mh+debian-packages@zugschlus.de>
+#              nagios3 version by Alexander Wirt <formorer@debian.org>
+
+### BEGIN INIT INFO
+# Provides:          nagios3
+# Required-Start:    $local_fs $remote_fs $syslog $named $network $time
+# Required-Stop:     $local_fs $remote_fs $syslog $named $network
+# Should-Start:      
+# Should-Stop:       
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: nagios host/service/network monitoring and management system
+# Description:       nagios is a monitoring and management system for hosts, services and networks.
+### END INIT INFO
+
+set -e
+
+. /lib/lsb/init-functions
+
+DAEMON=/usr/sbin/nagios3
+NAME="nagios3"
+DESC="nagios3 monitoring daemon"
+NAGIOSCFG="/etc/nagios3/nagios.cfg"
+CGICFG="/etc/nagios3/cgi.cfg"
+NICENESS=5
+
+[ -x "$DAEMON" ] || exit 0
+[ -r /etc/default/nagios3 ] && . /etc/default/nagios3
+
+
+# this is from madduck on IRC, 2006-07-06
+# There should be a better possibility to give daemon error messages
+# and/or to log things
+log()
+{
+  case "$1" in
+    [[:digit:]]*) success=$1; shift;;
+    *) :;;
+  esac
+  log_action_begin_msg "$1"; shift
+  log_action_end_msg ${success:-0} "$*"
+}
+
+check_started () {
+       #nagios3-core can be installed without -cgi
+       if [ -e $CGICFG ];
+       then
+               check_cmd=$(get_config nagios_check_command $CGICFG)
+               if [ ! "$check_cmd" ]; then
+                       log 6 "unable to determine nagios_check_command from $CGICFG!" 
+                       return 6
+               fi
+       else 
+               #use hardcoded default version
+               check_cmd="/usr/lib/nagios/plugins/check_nagios /var/cache/nagios3/status.dat 5 '/usr/sbin/nagios3'"
+       fi
+
+  eval $check_cmd >/dev/null
+               
+  if [ -f "$THEPIDFILE" ]; then
+    pid="$(cat $THEPIDFILE)"
+    if [ "$pid" ] && kill -0 $pid >/dev/null 2>/dev/null; then
+      return 0    # Is started
+    fi
+  fi
+  return 1     # Isn't started
+}
+
+#
+#      get_config()
+#
+#      grab a config option from nagios.cfg (or possibly another nagios config
+#      file if specified).  everything after the '=' is echo'd out, making
+#      this a nice generalized way to get requested settings.
+#
+get_config () {
+  if [ "$2" ]; then
+    set -- `grep ^$1 $2 | sed 's@=@ @'`
+  else
+    set -- `grep ^$1 $NAGIOSCFG | sed 's@=@ @'`
+  fi
+  shift
+  echo $*
+}
+
+check_config () {
+  if $DAEMON -v $NAGIOSCFG >/dev/null 2>&1 ; then
+    # First get the user/group etc Nagios is running as
+    nagios_user="$(get_config nagios_user)"
+    nagios_group="$(get_config nagios_group)"
+    log_file="$(get_config log_file)"
+    log_dir="$(dirname $log_file)"
+
+    return 0    # Config is ok
+  else
+    # config is not okay, so let's barf the error to the user
+    $DAEMON -v $NAGIOSCFG
+  fi
+}
+
+check_named_pipe () {
+  nagiospipe="$(get_config command_file)"
+  if [ -p "$nagiospipe" ]; then
+    return 1   # a named pipe exists
+  elif [ -e "$nagiospipe" ];then
+    return 1
+  else
+    return 0   # no named pipe exists
+  fi
+}
+
+if [ ! -f "$NAGIOSCFG" ]; then
+  log_failure_msg "There is no configuration file for Nagios 3."
+  exit 6
+fi
+
+THEPIDFILE=$(get_config "lock_file")
+[ -n "$THEPIDFILE" ] || THEPIDFILE='/var/run/nagios3/nagios.pid'
+
+start () {
+  DIRECTORY=$(dirname $THEPIDFILE)
+  [ ! -d $DIRECTORY ] && mkdir -p $DIRECTORY
+  chown nagios:nagios $DIRECTORY
+
+  if ! check_started; then
+    if ! check_named_pipe; then
+      log_action_msg "named pipe exists - removing"
+      rm -f $nagiospipe
+    fi
+    if check_config; then
+      start_daemon -n $NICENESS -p $THEPIDFILE $DAEMON -d $NAGIOSCFG
+      ret=$?
+    else
+      log_failure_msg "errors in config!"
+      log_end_msg 1
+      exit 1
+    fi
+  else
+    log_warning_msg "already running!"
+  fi
+  return $ret
+}
+
+stop () {
+    killproc -p $THEPIDFILE
+    ret=$?
+    if [ `pidof nagios3 | wc -l ` -gt 0 ]; then
+        echo -n "Waiting for $NAME daemon to die.."
+        cnt=0
+        while [ `pidof nagios3 | wc -l ` -gt 0 ]; do
+            cnt=`expr "$cnt" + 1`
+            if [ "$cnt" -gt 15 ]; then
+                kill -9 `pidof nagios3`
+                break
+            fi
+            sleep 1
+            echo -n "."
+        done
+    fi
+    echo
+    if ! check_named_pipe; then
+      rm -f $nagiospipe
+    fi
+    if [ -n "$ret" ]; then
+      return $ret
+    else
+      return $?
+    fi
+}
+
+status()
+{
+  log_action_begin_msg "checking $DAEMON"
+  if check_started; then
+    log_action_end_msg 0 "running"
+  else
+    if [ -e "$THEPIDFILE" ]; then
+      log_action_end_msg 1 "$DAEMON failed"
+      exit 1
+    else
+      log_action_end_msg 1 "not running"
+      exit 3
+    fi
+  fi
+}
+
+
+reload () {
+  # Check first
+  if check_config; then
+    if check_started; then
+      killproc -p $THEPIDFILE $DAEMON 1 
+    else
+      log_warning_msg "Not running."
+    fi
+  else
+    log_failure_msg "errors in config!"
+    log_end_msg 6
+    exit 6
+ fi
+}
+
+check () {
+   $DAEMON -v $NAGIOSCFG
+}
+
+case "$1" in
+  start)
+    log_daemon_msg "Starting $DESC" "$NAME"
+    start
+    log_end_msg $?
+    ;;
+  stop)
+    log_daemon_msg "Stopping $DESC" "$NAME"
+    stop
+    log_end_msg $?
+  ;;
+  restart)
+    log_daemon_msg "Restarting $DESC" "$NAME"
+    stop
+    if [ -z "$?" -o "$?" = "0" ]; then
+      start
+    fi
+    log_end_msg $?
+  ;;
+  reload|force-reload)
+    log_daemon_msg "Reloading $DESC configuration files" "$NAME"
+    reload
+    log_end_msg $?
+  ;;
+  status)
+    status
+    ;;
+  check)
+    check
+    ;;
+  *)
+    log_failure_msg "Usage: $0 {start|stop|restart|reload|force-reload|status}" >&2
+    exit 1
+  ;;
+esac
+
+exit 0
index e91f7f217934f5c92d2df09fb750c40c8e75c1dd..cf5ae48001ff951c6745fdd17d7fec733da9f197 100644 (file)
@@ -9,8 +9,15 @@ class nagios::server {
                ensure => installed
        }
 
+       file { '/etc/init.d/nagios3':
+               source  => 'puppet:///modules/nagios/nagios3.init',
+               require => Package['nagios3'],
+               before  => Service['nagios3'],
+       }
+
        service { 'nagios3':
-               ensure => running,
+               ensure  => running,
+               require => Package['nagios3'],
        }
 
        file { '/etc/nagios-plugins/config':