You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-analyzer/check_mk/check_mk-1.2.8_p16.ebuild

350 lines
11 KiB

# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
PYTHON_COMPAT=( python2_7 )
inherit toolchain-funcs user systemd python-single-r1
DESCRIPTION="General purpose Nagios/Icinga plugin for retrieving data"
HOMEPAGE="http://mathias-kettner.de/check_mk.html"
MY_P="${P/_p/p}"
MY_PV="${MY_P/check_mk-/}"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="agent-only apache_status livestatus logwatch mysql +nagios4
nfsexports oracle postgres smart wato xinetd zypper"
RDEPEND="wato? ( app-admin/sudo )
xinetd? ( || ( sys-apps/xinetd sys-apps/systemd ) )
!agent-only? (
www-servers/apache[apache2_modules_access_compat(+)]
www-apache/mod_python[${PYTHON_USEDEP}]
livestatus? ( net-analyzer/mk-livestatus[nagios4=] )
nagios4? ( >=net-analyzer/nagios-core-4 )
!nagios4? ( || ( <net-analyzer/nagios-core-4 net-analyzer/icinga ) )
)
media-libs/libpng:0
!!net-analyzer/check_mk_agent"
DEPEND="${DEPEND}"
REQUIRED_USE="
livestatus? ( !agent-only )
wato? ( !agent-only )"
SRC_URI="http://mathias-kettner.de/download/${MY_P}.tar.gz"
S="${WORKDIR}/${MY_P}"
src_prepare() {
# modify setup.sh for gentoo
eapply "${FILESDIR}"/${PN}-1.2.8p16-setup.sh.patch
eapply_user
}
src_configure() {
if has_version net-analyzer/nagios-core; then
einfo "Using nagios as net-analyzer/nagios-core found"
export mydaemon=nagios
export nagpipe=/var/nagios/rw/nagios.cmd
export check_result_path=/var/nagios/spool/checkresults
export nagios_status_file=/var/nagios/status.dat
export rrd_path=/var/nagios/perfdata
if use livestatus; then
export livesock=/var/nagios/rw/live
fi
else
einfo "Using icinga as net-analyzer/nagios-core not found"
export mydaemon=icinga
export nagpipe=/var/lib/icinga/rw/icinga.cmd
export check_result_path=/var/lib/icinga/spool/checkresults
export nagios_status_file=/var/lib/icinga/status.dat
export rrd_path=/var/lib/icinga/perfdata
if use livestatus; then
export livesock=/var/lib/icigna/rw/live
fi
fi
export nagiosuser=${mydaemon}
export nagios_binary=/usr/sbin/${mydaemon}
export nagios_config_file=/etc/${mydaemon}/${mydaemon}.cfg
export nagconfdir=/etc/${mydaemon}/check_mk.d
export nagios_startscript=/etc/init.d/${mydaemon}
export htpasswd_file=/etc/${mydaemon}/htpasswd.users
export nagios_auth_name="${mydaemon} Access"
export docdir=/usr/share/doc/${PF}
export checkmandir=/usr/share/doc/${PF}/checks
export check_icmp_path=/usr/lib/nagios/plugins/check_icmp
export wwwuser=apache
export wwwgroup=apache
export apache_config_dir=/etc/apache2/modules.d/
export enable_livestatus=no
export STRIPPROG=/bin/true
mkdir -p "${S}"/usr/share/check_mk/agents || die
cat <<EOF >"${S}"/usr/share/check_mk/agents/Makefile
all: waitmax
waitmax: waitmax.c
\$(CC) \$(CFLAGS) \$< -o \$@ \$(LDFLAGS)
EOF
}
src_compile() {
DESTDIR=${S} ./setup.sh --yes || die "Error while running setup.sh"
# compile waitmax
pushd "${S}"/usr/share/check_mk/agents &>/dev/null || die
if [[ -f waitmax ]]; then
rm waitmax || die "Couldn't delete precompiled waitmax file"
fi
emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)"
popd &>/dev/null || die
# Fix broken png files
einfo "Fixing broken png files."
local x=0;
for png in "${S}"/usr/share/check_mk/web/htdocs/images/icons/*.png ; do
echo ${png#${S}}
pngfix -q --out="${T}"/out.png "${png}" && \
mv -f "${T}"/out.png "${png}" || die
x=$((x+1))
done
einfo "$x png files processed."
# enforce the correct python in these wrapper scripts
sed -i -e "/exec/s/python /${EPYTHON} /" usr/bin/{check_mk,mkp} || die
sed -i -e "/command_line/s#python /var#${EPYTHON} /var#" \
usr/share/check_mk/check_mk_templates.cfg || die
# fix all shebangs
find usr -type f -name \*.py |while read py ; do
grep '^#!' ${py} &>/dev/null && \
python_fix_shebang ${py}
done
}
src_install() {
if ! use agent-only; then
# Apache configuration
insinto /etc/apache2/modules.d
doins etc/apache2/modules.d/zzz_check_mk.conf
if use wato; then
# sudoers configuration
cat << EOF > "${T}"/check_mk || die
# Needed for WATO - the Check_MK Web Administration Tool
Defaults:apache !requiretty
apache ALL = (root) NOPASSWD: /usr/bin/check_mk --automation *
EOF
insinto /etc/sudoers.d
doins "${T}"/check_mk
fi
# check_mk configuration
#keepdir /etc/check_mk
insinto /etc/check_mk
doins etc/check_mk/main.mk
doins etc/check_mk/main.mk-${MY_PV}
doins etc/check_mk/multisite.mk
doins etc/check_mk/multisite.mk-${MY_PV}
#keepdir /etc/check_mk/conf.d
insinto /etc/check_mk/conf.d
doins etc/check_mk/conf.d/README
dodir /etc/check_mk/conf.d/wato
touch "${D}"/etc/check_mk/conf.d/distributed_wato.mk
#keepdir /etc/check_mk/multisite.d
dodir /etc/check_mk/multisite.d/wato
touch "${D}"/etc/check_mk/multisite.d/sites.mk
insinto /etc/${mydaemon}
doins etc/${mydaemon}/auth.serials
# Nagios / Icinga check_mk templates
insinto /etc/${mydaemon}/check_mk.d
doins etc/${mydaemon}/check_mk.d/check_mk_templates.cfg
dobin usr/bin/check_mk
dobin usr/bin/mkp
dosym /usr/bin/check_mk /usr/bin/cmk
# remove compiled agent_modbus
if [[ -f ${S}/usr/share/doc/${PF}/treasures/modbus/agent_modbus ]]; then
rm "${S}"/usr/share/doc/${PF}/treasures/modbus/agent_modbus || die "Couldn't remove precompiled agent_modbus"
fi
insinto /usr/share/check_mk
doins -r usr/share/check_mk/*
keepdir /var/lib/check_mk/autochecks
keepdir /var/lib/check_mk/cache
keepdir /var/lib/check_mk/counters
keepdir /var/lib/check_mk/inventory
keepdir /var/lib/check_mk/log
keepdir /var/lib/check_mk/logwatch
keepdir /var/lib/check_mk/notify
keepdir /var/lib/check_mk/precompiled
keepdir /var/lib/check_mk/snmpwalks
keepdir /var/lib/check_mk/tmp
keepdir /var/lib/check_mk/wato
keepdir /var/lib/check_mk/web
insinto /var/lib/check_mk/packages
doins var/lib/check_mk/packages/check_mk
# Update check_mk defaults
sed -i -e "s#^\(check_mk_automation\s*= 'sudo -u\) portage \(.*\)\$#\1 ${mydaemon} \2#" "${D}"/usr/share/check_mk/modules/defaults || die "Couldn't update check_mk defaults"
cp "${D}"/usr/share/check_mk/modules/defaults "${D}"/usr/share/check_mk/web/htdocs/defaults.py || die "Couldn't copy check_mk defaults"
# Change permissions
fowners -R ${mydaemon}:apache /etc/${mydaemon}/auth.serials
fperms -R 0660 /etc/${mydaemon}/auth.serials
fowners -R ${mydaemon}:${mydaemon} /etc/${mydaemon}/check_mk.d
fperms -R 0775 /etc/${mydaemon}/check_mk.d
fowners -R root:apache /etc/check_mk/conf.d/wato
fperms -R 0775 /etc/check_mk/conf.d/wato
fowners root:apache /etc/check_mk/conf.d/distributed_wato.mk
fperms 0664 /etc/check_mk/conf.d/distributed_wato.mk
fowners -R root:apache /etc/check_mk/multisite.d/wato
fperms -R 0775 /etc/check_mk/multisite.d/wato
fowners root:apache /etc/check_mk/multisite.d/sites.mk
fperms 0664 /etc/check_mk/multisite.d/sites.mk
fowners root:${mydaemon} /var/lib/check_mk/cache
fperms 0775 /var/lib/check_mk/counters
fowners -R root:${mydaemon} /var/lib/check_mk/counters
fperms 0775 /var/lib/check_mk/notify
fowners -R root:${mydaemon} /var/lib/check_mk/notify
fperms 0775 /var/lib/check_mk/inventory
fowners -R root:${mydaemon} /var/lib/check_mk/inventory
fperms 0775 /var/lib/check_mk/log
fowners -R root:${mydaemon} /var/lib/check_mk/log
fperms 0775 /var/lib/check_mk/logwatch
fowners -R root:${mydaemon} /var/lib/check_mk/logwatch
fperms 0775 /var/lib/check_mk/cache
fowners -R root:${mydaemon} /var/lib/check_mk/cache
fperms -R 0775 /var/lib/check_mk/tmp
fowners -R root:apache /var/lib/check_mk/tmp
fperms -R 0775 /var/lib/check_mk/web
fowners -R root:apache /var/lib/check_mk/web
fperms -R 0775 /var/lib/check_mk/wato
fowners -R root:apache /var/lib/check_mk/wato
fperms -R 0775 /var/lib/check_mk/
fowners -R ${mydaeon}:apache /var/lib/check_mk/
fi
# Install agent related files
newbin usr/share/check_mk/agents/check_mk_agent.linux check_mk_agent
dobin usr/share/check_mk/agents/waitmax
if use xinetd; then
pushd "${S}"/usr/share/check_mk/agents/cfg_examples &>/dev/null || die
insinto /etc/xinetd.d
newins xinetd.conf check_mk
systemd_dounit systemd/check_mk@.service systemd/check_mk.socket
popd &>/dev/null || die
fi
keepdir /usr/lib/check_mk_agent/local
keepdir /usr/lib/check_mk_agent/plugins
# Documentation
if ! use agent-only; then
dodoc -r usr/share/doc/${PF}/*
docompress -x /usr/share/doc/${PF}/checks/
else
dodoc usr/share/doc/${PF}/AUTHORS usr/share/doc/${PF}/COPYING usr/share/doc/${PF}/ChangeLog
docompress
fi
# Install the check_mk_agent logwatch plugin
if use logwatch; then
insinto /etc/check_mk
doins usr/share/check_mk/agents/cfg_examples/logwatch.cfg
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/mk_logwatch
fi
# Install the check_mk_agent smart plugin
if use smart; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/smart
fi
# Install the check_mk_agent mysql plugin
if use mysql; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/mk_mysql
fi
# Install the check_mk_agent postgres plugin
if use postgres; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/mk_postgres
fi
# Install the check_mk_agent apache_status plugin
if use apache_status; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/apache_status
fi
# Install the check_mk_agent zypper plugin
if use zypper; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/mk_zypper
fi
# Install the check_mk_agent oracle plugin
if use oracle; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/mk_oracle
fi
# Install the check_mk_agent nfsexports plugin
if use nfsexports; then
exeinto /usr/lib/check_mk_agent/plugins
doexe usr/share/check_mk/agents/plugins/nfsexports
fi
}
pkg_postinst() {
if ! use agent-only; then
elog "IMPORTANT: Please add the following line to your"
elog "/etc/${mydaemon}/${mydaemon}.cfg, so that"
elog "${mydaemon} can load your check_mk configuration."
elog
elog " cfg_dir=/etc/${mydaemon}/check_mk.d"
elog
fi
if use wato; then
elog "INFO: Your webserver needs write access to"
elog "/etc/${mydaemon}/htpasswd.users!"
elog "otherwise wato will not function correctly!"
elog
elog "chown ${mydaemon}: /etc/${mydaemon}/htpasswd.users"
elog "chmod 660 /etc/${mydaemon}/htpasswd.users"
elog
elog "Alternatively with ACLs:"
elog "setfacl -m u:apache:rw /etc/${mydaemon}/htpasswd.users"
elog "setfacl -m g:apache:rw /etc/${mydaemon}/htpasswd.users"
elog
fi
if use livestatus; then
elog "In order for livestatus to work, you need to make sure that"
if has_version net-analyzer/nagios-core; then
elog "nagios is loading the livestatus broker module. Please"
elog "ensure to add to your nagios.cfg the lines in"
elog "/usr/share/mk-livestatus/nagios.cfg"
else
elog "icigna is loading the livestatus broker module. Please"
elog "include /usr/share/mk-livestatus/icigna.cfg in your"
elog "icigna configuration."
fi
fi
}