diff --git a/roles/mgrote_munin_server/defaults/main.yml b/roles/mgrote_munin_server/defaults/main.yml index a3e8e1c4..eb8ac3ab 100644 --- a/roles/mgrote_munin_server/defaults/main.yml +++ b/roles/mgrote_munin_server/defaults/main.yml @@ -25,3 +25,5 @@ munin_hosts: - name: "{{ ansible_fqdn }}" address: "127.0.0.1" extra: ["use_node_name yes"] + +munin_cron_job: present diff --git a/roles/mgrote_munin_server/tasks/main.yml b/roles/mgrote_munin_server/tasks/main.yml index 111642b5..016f67ae 100644 --- a/roles/mgrote_munin_server/tasks/main.yml +++ b/roles/mgrote_munin_server/tasks/main.yml @@ -44,13 +44,105 @@ owner: munin group: munin +- name: Enable or disable the munin cron job. + lineinfile: + dest: /etc/cron.d/munin + state: "{{ munin_cron_job }}" + regexp: "^\\*/5 \\* \\* \\* \\*" + line: "*/5 * * * * munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi" + create: true + mode: 0644 + # TODO mail config? wie senden? # COPY munin_mail.conf /etc/munin/munin-conf.d/munin_mail.conf +# configure mail notification +if [[ -n "$MAILCONTACT" && -n "$MAILSERVER" && -n "$MAILPORT" && -n "$MAILUSER" && -n "$MAILPASSWORD" && -n "$MAILDOMAIN" ]] ; then + MAILCONTACT=${MAILCONTACT:="contact@domain.test"} + sed -i "s/mailcontact/$MAILCONTACT/g" /etc/ssmtp/ssmtp.conf + sed -i "s/mailcontact/$MAILCONTACT/g" /etc/munin/munin-conf.d/munin_mail.conf + MAILSERVER=${MAILSERVER:="mail.domain.test"} + sed -i "s/mailserver/$MAILSERVER/g" /etc/ssmtp/ssmtp.conf + sed -i "s/mailserver/$MAILSERVER/g" /etc/ssmtp/revaliases + MAILPORT=${MAILPORT:="25"} + sed -i "s/mailport/$MAILPORT/g" /etc/ssmtp/ssmtp.conf + sed -i "s/mailport/$MAILPORT/g" /etc/ssmtp/revaliases + MAILUSER=${MAILUSER:="alert@domain.test"} + sed -i "s/mailuser/$MAILUSER/g" /etc/ssmtp/ssmtp.conf + MAILFROM=${MAILFROM:="munin@domain.test"} + sed -i "s/mailfrom/$MAILFROM/g" /etc/ssmtp/revaliases + MAILPASSWORD=${MAILPASSWORD:="XXXXXXXXX"} + sed -i "s/mailpassword/$MAILPASSWORD/g" /etc/ssmtp/ssmtp.conf + MAILDOMAIN=${MAILDOMAIN:="domain.test"} + sed -i "s/maildomain/$MAILDOMAIN/g" /etc/ssmtp/ssmtp.conf + sed -i "s/mailhost/$MAILDOMAIN/g" /etc/ssmtp/ssmtp.conf + MAILNAME=${MAILNAME:="Munin"} + sed -i "s/munin application user/$MAILNAME/g" /etc/passwd +else + rm /etc/munin/munin-conf.d/munin_mail.conf /etc/ssmtp/ssmtp.conf +fi + +# cronjoib? timer? TODO -# launcher -CMD ["/usr/local/bin/run"] -COPY run.sh /usr/local/bin/run -chmod +x /usr/local/bin/run +# sed -i "s/\*\/5/\*\/5/g" /etc/cron.d/munin kommt imho aus paket -# cronjoib? timer? + + + + + +# generate node list +NODES=${NODES:-} +for NODE in $NODES +do + NAME=`echo $NODE | cut -d ':' -f1` + HOST=`echo $NODE | cut -d ':' -f2` + grep -q "${HOST}$" /etc/munin/munin.conf || cat << EOF >> /etc/munin/munin.conf +[$NAME] + address $HOST + use_node_name yes + +EOF +done + +# placeholder html to prevent permission error +if [ ! -f /var/cache/munin/www/index.html ]; then + cat << EOF > /var/cache/munin/www/index.html + + + Munin + + + Munin has not run yet. Please try again in a few moments. + + +EOF + chown -R munin: /var/cache/munin/www/index.html +fi + +# ensure munin folder exist and have right permission +mkdir -p /var/lib/munin/cgi-tmp /var/cache/munin/www +chown -R munin:munin /var/lib/munin /var/cache/munin +chmod -R ugo+rw /var/lib/munin/cgi-tmp +chown munin:munin /var/log/munin/munin-graph.log +chown munin:munin /var/log/munin/munin-limits.log +chown munin:munin /var/log/munin/munin-html.log + +# start cron +/usr/sbin/cron & + +# start local munin-node +/usr/sbin/munin-node > /dev/null 2>&1 & + +# confirm nodes +echo "Using the following munin nodes:" +echo " $THISNODENAME" +echo " $NODES" + +# start apache +/usr/sbin/apache2ctl start + +# display logs +touch /var/log/munin/munin-update.log +chown munin:munin /var/log/munin/munin-update.log +tail -f /var/log/munin/munin-*.log