diff --git a/roles/nagios_monitored/files/scripts/check_load b/roles/nagios_monitored/files/scripts/check_load new file mode 100755 index 0000000000000000000000000000000000000000..8e6966c4e309874444dbe4cca2f5e783e107fc88 Binary files /dev/null and b/roles/nagios_monitored/files/scripts/check_load differ diff --git a/roles/nagios_monitored/files/scripts/check_munge b/roles/nagios_monitored/files/scripts/check_munge new file mode 100755 index 0000000000000000000000000000000000000000..bf7c01cf1c5be003604a09f77e51d99d7bc7344c --- /dev/null +++ b/roles/nagios_monitored/files/scripts/check_munge @@ -0,0 +1,21 @@ +#!/usr/bin/python +import sys, os, pwd +import getopt +import commands +import subprocess + +STATE_OK=0 +STATE_WARNING=1 + +check_munge=subprocess.Popen("/usr/sbin/service munge status", shell=True, stdout=subprocess.PIPE) +munge_status=check_munge.communicate()[0] + +if "run" in munge_status: + print "Munge is Running" + sys.exit(STATE_OK) +else: + print "Munge is NOT Running !!" + sys.exit(STATE_WARNING) + +sys.exit(STATE_OK) + diff --git a/roles/nagios_monitored/tasks/main.yml b/roles/nagios_monitored/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..8a1e5ce9b0f0273344b7e8b3331d8ac4cb2b4a1b --- /dev/null +++ b/roles/nagios_monitored/tasks/main.yml @@ -0,0 +1,19 @@ +--- +- name: create nagios user + user: name=nagios system=yes createhome=yes home=/var/lib/nagios shell=/bin/bash + sudo: true + +- name: authorize_key + authorized_key: user=nagios key="{{ monitor_pubkey }}" + sudo: true + +- name: make scripts directory + file: path=/var/lib/nagios/scripts state=directory owner=nagios mode=755 + sudo: true + +- name: install monitor scripts + copy: dest=/var/lib/nagios/scripts/{{ item }} src=scripts/{{ item }} mode=755 + with_items: + - check_load + - check_munge + sudo: true diff --git a/roles/nagios_server/tasks/main.yml b/roles/nagios_server/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..9e56db5b42cb982990d45423a72ec534102377fd --- /dev/null +++ b/roles/nagios_server/tasks/main.yml @@ -0,0 +1,31 @@ +--- +- name: copy priv key + template: src={{ monitor_privkey_file }} dest=/var/lib/nagios/.ssh/id_rsa mode=600 owner=nagios + sudo: true + +- name: install packages + apt: name={{ item }} state=installed + with_items: + - nagios3 + - python-passlib + - python3-passlib + sudo: true + +- name: configure nagios authentication + htpasswd: path=/etc/nagios3/htpasswd.users name={{ nagios_username }} password={{ nagios_password }} + sudo: true + +- name: configure monitoring + template: src={{ item }}_nagios2.cfg.j2 dest=/etc/nagios3/conf.d/{{ item }}_nagios2.cfg + with_items: + - 'hostgroups' + - 'hosts' + - 'commands' + - 'services' + - 'extinfo' + sudo: true + +- name: force restart + service: name=nagios3 state=restarted + sudo: true + diff --git a/roles/nagios_server/templates/commands_nagios2.cfg.j2 b/roles/nagios_server/templates/commands_nagios2.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..8f4f49cf168a8c9cf3aa55a036c6ff03c7dc79a2 --- /dev/null +++ b/roles/nagios_server/templates/commands_nagios2.cfg.j2 @@ -0,0 +1,9 @@ +define command { + command_name check_mount + command_line /usr/lib/nagios/plugins/check_by_ssh -H $HOSTADDRESS$ -C "/var/lib/nagios/scripts/check_mount.pl -m $ARG1$" +} +define command { + command_name check_munge + command_line /usr/lib/nagios/plugins/check_by_ssh -H $HOSTADDRESS$ -C "/var/lib/nagios/scripts/check_munge" +} + diff --git a/roles/nagios_server/templates/extinfo_nagios2.cfg.j2 b/roles/nagios_server/templates/extinfo_nagios2.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/roles/nagios_server/templates/hostgroups_nagios2.cfg.j2 b/roles/nagios_server/templates/hostgroups_nagios2.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..54b7862e846f0b6cc8aa247cb4c73d0b1c79c601 --- /dev/null +++ b/roles/nagios_server/templates/hostgroups_nagios2.cfg.j2 @@ -0,0 +1,44 @@ +# Some generic hostgroup definitions + +## A simple wildcard hostgroup +#define hostgroup { +# hostgroup_name all +# alias All Servers +# members * +# } + +## A list of your Debian GNU/Linux servers +#define hostgroup { +# hostgroup_name debian-servers +# alias Debian GNU/Linux Servers +# members localhost +# } + +## A list of your web servers +#define hostgroup { +# hostgroup_name http-servers +# alias HTTP servers +# members localhost +# } + +## A list of your ssh-accessible servers +#define hostgroup { +# hostgroup_name ssh-servers +# alias SSH servers +# members * +# } + + +{% for group in groups %} +#{ % if group != "all" % } +{% set nodelist = [] %} +{% for node in groups[group] %} +{% if nodelist.append(node) %} +{% endif %} +{% endfor %} +define hostgroup { + hostgroup_name {{ group }} + members {{ nodelist|unique|join(',') }} +} +#{ % endif % } +{% endfor %} diff --git a/roles/nagios_server/templates/hosts_nagios2.cfg.j2 b/roles/nagios_server/templates/hosts_nagios2.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..44e82a60a81402de44244e279a72a572122dc200 --- /dev/null +++ b/roles/nagios_server/templates/hosts_nagios2.cfg.j2 @@ -0,0 +1,14 @@ +{% set nodelist = [] %} +{% for group in groups %} +{% for node in groups[group] %} +{% if nodelist.append(node) %} +{% endif %} +{% endfor %} +{% endfor %} +{% for host in nodelist|unique %} +define host{ + use generic-host + host_name {{ host }} + address {{ hostvars[host]['ansible_hostname'] }} +} +{% endfor %} diff --git a/roles/nagios_server/templates/services_nagios2.cfg.j2 b/roles/nagios_server/templates/services_nagios2.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..d5cbbca3b22bbd77003de659af549c130b87c71a --- /dev/null +++ b/roles/nagios_server/templates/services_nagios2.cfg.j2 @@ -0,0 +1,9 @@ +{% for service in nagios_services %} +define service { + service_description {{ service.description }} + hostgroup_name {{ service.groups|join(',') }} + check_command {{ service.command }} + use generic-service + notification_interval 0 +} +{% endfor %}