diff options
Diffstat (limited to 'files/usr/local/etc/rc.d/myicinga2.icinga_server')
-rwxr-xr-x | files/usr/local/etc/rc.d/myicinga2.icinga_server | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/files/usr/local/etc/rc.d/myicinga2.icinga_server b/files/usr/local/etc/rc.d/myicinga2.icinga_server new file mode 100755 index 0000000..be10192 --- /dev/null +++ b/files/usr/local/etc/rc.d/myicinga2.icinga_server @@ -0,0 +1,113 @@ +#!/bin/sh + +# PROVIDE: icinga2 +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# Unfortunately, we must duplicate the icinga rc script here in order +# to provide a mechanism to pass flags to the icinga2 executable. + +. /etc/rc.subr + +# Add /usr/local/bin to path, so that the notification scripts +# can work (#!/usr/bin/env bash) +export PATH=$PATH:/usr/local/bin:/usr/local/sbin + +name="icinga2" +desc="Icinga 2 monitoring (core)" +rcvar=myicinga2_enable + +load_rc_config "${name}" + +: ${myicinga2_enable:="NO"} +: ${icinga2_configfile="/usr/local/etc/${name}/${name}.conf"} +: ${icinga2_user:="icinga"} +: ${icinga2_group:="icinga"} +: ${icinga2_webgroup:="www"} +: ${icinga2_flags:=""} + + +command="/usr/local/sbin/${name}" +procname="/usr/local/lib/icinga2/sbin/icinga2" +extra_commands="reload checkconfig configtest" + +icinga2_cachedir="/var/cache/${name}" +icinga2_libdir="/var/lib/${name}" +icinga2_logdir="/var/log/icinga2" +icinga2_rundir="/var/run/${name}" +icinga2_spooldir="/var/spool/${name}" + +pidfile="${icinga2_rundir}/${name}.pid" +icinga2_logfile="${icinga2_logdir}/${name}.log" +icinga2_errorlogfile="${icinga2_logdir}/error.log" + +start_cmd="start_cmd" +start_precmd="start_precmd" +restart_precmd="icinga2_checkconfig" +reload_precmd="reload_precmd" +checkconfig_cmd="icinga2_checkconfig verbose" +configtest_cmd="${checkconfig_cmd}" +sig_reload=HUP + +required_files="${icinga2_configfile}" +command_args="daemon -d -e ${icinga2_errorlogfile} -c ${icinga2_configfile} ${icinga2_flags}" + +icinga2_checkconfig() { + echo -n "Performing sanity check of icinga2 configuration: " + + if [ "$1" != "verbose" ]; then + quietredir="2>&1 >/dev/null" + fi + + ${command} daemon -c ${icinga2_configfile} -C + + if [ $? -ne 0 ]; then + echo "FAILED" + return 1 + else + echo "OK" + fi +} + +reload_precmd() { + if ! icinga2_checkconfig; then + return 1 + fi +} + +start_precmd() { + # Create necessary directories / change ownership + # While this is also done through pkg-plist, /var might be on a ramdisk, + # so make sure all needed files and directories are created before starting + # Icinga. + for d in "${icinga2_logdir}" "${icinga2_logdir}/compat" \ + "${icinga2_logdir}/compat/archives" "${icinga2_libdir}" \ + "${icinga2_spooldir}" "${icinga2_spooldir}/tmp" \ + "${icinga2_rundir}" "${icinga2_cachedir}"; do + if [ ! -d "${d}" ]; then + install -d -o ${icinga2_user} -g ${icinga2_group} "${d}" + fi + done + + install -d -o ${icinga2_user} -g ${icinga2_webgroup} -m 2750 "${icinga2_rundir}/cmd" + + chown -R ${icinga2_user}:${icinga2_group} "${icinga2_libdir}" + chown -R ${icinga2_user}:${icinga2_group} "${icinga2_spooldir}" + chown -R ${icinga2_user}:${icinga2_group} "${icinga2_cachedir}" + chown -R ${icinga2_user}:${icinga2_webgroup} "${icinga2_rundir}/cmd" + + + if ! icinga2_checkconfig; then + return 1 + fi + + if [ ! -f "${icinga2_logfile}" ]; then + install -o "${icinga2_user}" -g "${icinga2_group}" -m 644 /dev/null "${icinga2_logfile}" + fi +} + +start_cmd() { + ${command} ${command_args} +} + +run_rc_command "$1" |