limosek-zaf/install.sh

124 lines
3.3 KiB
Bash
Raw Normal View History

2016-03-23 14:37:51 +01:00
#!/bin/sh
readopt(){
echo -n "$1 [$2]: "
read opt
[ -z "$opt" ] && opt="$2"
}
getrest(){
if [ -f "$(dirname $0)/$1" ]; then
echo "$(dirname $0)/$1"
else
wget https://raw.githubusercontent.com/limosek/zaf/master/$1 -O- >${ZAF_TMP_DIR}/$(basename $1)
echo ${ZAF_TMP_DIR}/$(basename $1)
fi
}
preconf(){
echo "Zabbix Agent Framework installer."
if ! which zabbix_agentd >/dev/null; then
echo "Zabbix agent not installed? Exiting."
exit 3
fi
if ! [ -f "/etc/zaf.conf" ] || [ -n "$1" ]; then
readopt "Tmp directory" "/tmp/zaf"
ZAF_TMP_DIR="$opt"
readopt "Libraries directory" "/usr/lib/zaf"
ZAF_LIB_DIR="$opt"
readopt "Plugins directory" "${ZAF_LIB_DIR}/plugins"
ZAF_PLUGINS_DIR="$opt"
readopt "Git plugins directory" "${ZAF_LIB_DIR}/repo"
ZAF_REPO_DIR="$opt"
2016-03-23 17:25:18 +01:00
readopt "Plugins repository" ""
2016-03-23 14:37:51 +01:00
ZAF_PLUGINS_REPO="$opt"
readopt "Default plugins to install" "process-info"
ZAF_DEFAULT_PLUGINS="$opt"
readopt "Zabbix agent config" "/etc/zabbix/zabbix_agentd.conf"
ZAF_AGENT_CONFIG="$opt"
2016-03-23 17:25:18 +01:00
readopt "Zabbix agent config.d" "/etc/zabbix/zabbix_agentd.conf.d/"
ZAF_AGENT_CONFIGD="$opt"
2016-03-23 14:37:51 +01:00
readopt "Zabbix agent restart cmd" "service zabbix-agent restart"
ZAF_AGENT_RESTART="$opt"
if which sudo >/dev/null; then
sudo=1
else
sudo=0
fi
readopt "Use sudo" "$sudo"
ZAF_SUDO="$opt"
else
echo "Skipping configuration. Config file /etc/zaf.conf already exists."
. /etc/zaf.conf
fi
if [ "$USERNAME" = "root" ]; then
echo "We are root. That is OK."
else
if [ "$ZAF_SUDO" = 1 ] && ! which sudo >/dev/null; then
echo "We are not root and sudo is not installed. Cannot continue."
exit 2
fi
echo "We are not root. Assuming we have enough privileges."
fi
echo "ZAF_LIB_DIR='$ZAF_LIB_DIR'" >/etc/zaf.conf || { echo "Not enough privileges. Please become root!"; exit 2; }
echo "ZAF_TMP_DIR='$ZAF_TMP_DIR'" >>/etc/zaf.conf
echo "ZAF_PLUGINS_DIR='$ZAF_PLUGINS_DIR'" >>/etc/zaf.conf
echo "ZAF_REPO_DIR='$ZAF_REPO_DIR'" >>/etc/zaf.conf
echo "ZAF_PLUGINS_REPO='$ZAF_PLUGINS_REPO'" >>/etc/zaf.conf
echo "ZAF_AGENT_RESTART='$ZAF_AGENT_RESTART'" >>/etc/zaf.conf
echo "ZAF_AGENT_CONFIG='$ZAF_AGENT_CONFIG'" >>/etc/zaf.conf
2016-03-23 17:25:18 +01:00
echo "ZAF_AGENT_CONFIGD='$ZAF_AGENT_CONFIGD'" >>/etc/zaf.conf
2016-03-23 14:37:51 +01:00
echo "ZAF_SUDO='$ZAF_SUDO'" >>/etc/zaf.conf
}
case $1 in
reconf)
preconf force
export ZAF_DEFAULT_PLUGINS
$0 install
;;
*)
preconf
rm -rif ${ZAF_TMP_DIR}
install -d ${ZAF_TMP_DIR}
install -d ${ZAF_LIB_DIR}
install -d ${ZAF_PLUGINS_DIR}
if [ -n "${ZAF_PLUGINS_REPO}" ]; then
if ! [ -d "${ZAF_REPO_DIR}" ]; then
git clone "${ZAF_PLUGINS_REPO}" "${ZAF_REPO_DIR}"
else
(cd "${ZAF_REPO_DIR}" && git pull)
fi
fi
install $(getrest lib/zaf.lib.sh) ${ZAF_LIB_DIR}/
mkdir -p ${ZAF_PLUGINS_DIR}
2016-03-23 17:25:18 +01:00
echo "UserParameter=zaf.version,echo master" >${ZAF_AGENT_CONFIGD}/zaf_base.conf
2016-03-23 14:37:51 +01:00
install $(getrest zaf) /usr/bin
echo "Install OK. Installing plugins (${ZAF_DEFAULT_PLUGINS})."
2016-03-23 17:25:18 +01:00
if ! /usr/bin/zaf check-agent-config; then
echo "Something is wrong with zabbix agent config."
echo "Ensure that zabbix_agentd reads ${ZAF_AGENT_CONFIG}"
echo "and there is Include=${ZAF_AGENT_CONFIGD} directive inside."
echo "Does ${ZAF_AGENT_RESTART} work?"
exit 1
fi
2016-03-23 14:37:51 +01:00
for plugin in ${ZAF_DEFAULT_PLUGINS}; do
/usr/bin/zaf install $plugin || exit $?
done
2016-03-23 17:25:18 +01:00
rm -rif ${ZAF_TMP_DIR}
2016-03-23 14:37:51 +01:00
echo "Done"
;;
esac