commit c1481d3da9998d8fb32e98da11d2e77ec9d05b91 Author: Sven Velt Date: Wed Dec 14 18:57:19 2016 +0100 Initial commit on request, not tested! diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..98a3264 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.*.sw? +*~ + diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..a3b83f5 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,35 @@ +--- +monitored_by_nrpe: False +monitored_by_ssh: False + +monitored_user: nagios +monitored_group: nagios +monitored_homedir: /var/lib/nagios +monitored_shell: /bin/bash + +monitored_packages_install: True + +monitored_nrpe_server_address: null +monitored_nrpe_port: 5666 + +monitored_server_ips: +- 127.0.0.1 + +monitored_nrpe_dont_blame: 0 +monitored_nrpe_allow_bash_command_substitution: 0 +monitored_nrpe_command_prefix: null +monitored_nrpe_command_timeout: 60 +monitored_nrpe_connection_timeout: 300 + +monitored_nrpe_include_files: null +monitored_nrpe_include_dirs: + - nrpe.d/ + - nrpe.local.d/ + +monitored_nrpe_servicename: nrpe + +monitored_ssh_key_files: + - ../../../ssh_key.pub +monitored_ssh_key_wrapper: null +monitored_ssh_key_wrapper_src: null + diff --git a/monitored.yml b/monitored.yml new file mode 100644 index 0000000..b42e268 --- /dev/null +++ b/monitored.yml @@ -0,0 +1,5 @@ +--- +- hosts: all + roles: + - monitored + diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..bcaf4e5 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,27 @@ +--- +- fail: msg="This system should not be monitored" + when: monitored_dont is defined + +- fail: msg="Neither monitored_by_(ssh|nrpe) is set" + when: monitored_by_nrpe == False and monitored_by_ssh == False + +- name: Gather OS Specific Variables + include_vars: "{{ item }}" + with_first_found: + - "{{ ansible_distribution|lower }}-{{ ansible_distribution_version }}.yml" + - "{{ ansible_distribution|lower }}-{{ ansible_distribution_major_version }}.yml" + - "{{ ansible_distribution|lower }}.yml" + - "{{ ansible_os_family|lower }}.yml" + - "defaults.yml" + +- include: user.yml + +- include: packages.yml + when: monitored_packages_install != False + +- include: nrpe.yml + when: monitored_by_nrpe == True + +- include: ssh.yml + when: monitored_by_ssh == True + diff --git a/tasks/nrpe.yml b/tasks/nrpe.yml new file mode 100644 index 0000000..313aacd --- /dev/null +++ b/tasks/nrpe.yml @@ -0,0 +1,37 @@ +--- +- name: Install NRPE daemon + package: + name: "{{ item }}" + state: latest + with_items: "{{ monitored_packages_nrpe }}" + +- name: Install daemon config + template: + src: nrpe.cfg.j2 + dest: "{{ monitored_nrpe_basedir }}/nrpe.cfg" + owner: "{{ monitored_user }}" + group: "{{ monitored_group }}" + mode: 0640 + backup: True + +- name: Create snippet config dirs + file: + path: "{{ monitored_nrpe_basedir }}/{{ item }}" + state: directory + owner: "{{ monitored_user }}" + group: "{{ monitored_group }}" + mode: 0750 + with_items: "{{ monitored_nrpe_include_dirs }}" + +#- include: nrpe_migrate.yml + +- name: Enable NRPE + service: + name: "{{ monitored_nrpe_servicename }}" + enabled: yes + +- name: Reload NRPE + service: + name: "{{ monitored_nrpe_servicename }}" + state: reloaded + diff --git a/tasks/packages.yml b/tasks/packages.yml new file mode 100644 index 0000000..b3495b4 --- /dev/null +++ b/tasks/packages.yml @@ -0,0 +1,17 @@ +--- +- name: Install Monitoring-Plugins + package: + name: "{{ item }}" + state: latest + register: monitoringplugins + ignore_errors: True + with_items: "{{ monitored_packages_mp }}" + + +- name: Install Nagios-Plugins + package: + name: "{{ item }}" + state: latest + with_items: "{{ monitored_packages_np }}" + when: monitoringplugins|failed + diff --git a/tasks/ssh.yml b/tasks/ssh.yml new file mode 100644 index 0000000..7d3f480 --- /dev/null +++ b/tasks/ssh.yml @@ -0,0 +1,23 @@ +--- +- name: Create dot-SSH directory for monitoring user + file: + path: "{{ monitored_homedir }}/.ssh/" + state: directory + owner: "{{ monitored_user }}" + group: "{{ monitored_group }}" + mode: 0700 + +- name: Copy SSH authorized_keys for monitoring user + authorized_key: + user: "{{ monitored_user }}" + key: "{{ lookup('file', item) }}" + key_options: 'no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-pty{% if monitored_ssh_key_wrapper %},command="{{ monitored_ssh_key_wrapper }}"{% endif %}' + with_items: monitored_ssh_key_files + +- name: Copy SSH wrapper + copy: + src: "{{ monitored_ssh_key_wrapper_src }}" + path: "{{ monitored_ssh_key_wrapper }}" + mode: 0755 + when: monitored_ssh_key_wrapper_src + diff --git a/tasks/user.yml b/tasks/user.yml new file mode 100644 index 0000000..092ef7b --- /dev/null +++ b/tasks/user.yml @@ -0,0 +1,17 @@ +--- +- name: Add monitoring group + group: + name: "{{ monitored_group }}" + system: yes + state: present + +- name: Add monitoring user + user: + name: "{{ monitored_user }}" + system: yes + group: "{{ monitored_group }}" + home: "{{ monitored_homedir }}" + move_home: yes + shell: "{{ monitored_shell }}" + state: present + diff --git a/templates/nrpe.cfg.j2 b/templates/nrpe.cfg.j2 new file mode 100644 index 0000000..c5629d7 --- /dev/null +++ b/templates/nrpe.cfg.j2 @@ -0,0 +1,43 @@ +### {{ ansible_managed }} + +log_facility=daemon +pid_file={{ monitored_nrpe_pidfile }} +debug=0 + +{% if monitored_nrpe_server_address %}server_address={{ monitored_nrpe_server_address }} +{% else %}# server_address= +{% endif %} +server_port={{ monitored_nrpe_port }} + +nrpe_user={{ monitored_user }} +nrpe_group={{ monitored_group }} + +allowed_hosts=127.0.0.1,{{ monitored_server_ips|join(',') }} + +dont_blame_nrpe={% if monitored_nrpe_dont_blame == "1" %}1 +{% else %}0 +{% endif %} +allow_bash_command_substitution={% if monitored_nrpe_allow_bash_command_substitution == "1" %}1 +{% else %}0 +{% endif %} + +{% if monitored_nrpe_command_prefix %}command_prefix={{ monitored_nrpe_command_prefix }} +{% else %}# command_prefix= +{% endif %} + +command_timeout={{ monitored_nrpe_command_timeout }} +connection_timeout={{ monitored_nrpe_connection_timeout }} + +#allow_weak_random_seed=1 + + +# INCLUDE CONFIG FILE +{% if monitored_nrpe_include_files %}{% for file in monitored_nrpe_include_files %}include={{ monitored_nrpe_basedir }}/{{ file }} +{% endfor %}{% endif %} + + +# INCLUDE CONFIG DIRECTORY +{% if monitored_nrpe_include_dirs %}{% for dir in monitored_nrpe_include_dirs %}include_dir={{ monitored_nrpe_basedir }}/{{ dir }} +{% endfor %}{% endif %} + + diff --git a/vars/archlinux.yml b/vars/archlinux.yml new file mode 100644 index 0000000..4e2ab23 --- /dev/null +++ b/vars/archlinux.yml @@ -0,0 +1,16 @@ +--- +monitored_user: nrpe +monitored_group: nrpe +monitored_homedir: /var/lib/nrpe + +monitored_packages_mp: + - monitoring-plugins +monitored_packages_np: + - nagios-plugins + +monitored_packages_nrpe: + - nrpe + +monitored_nrpe_basedir: /etc/nrpe +monitored_nrpe_pidfile: /var/run/nrpe/nrpe.pid + diff --git a/vars/debian.yml b/vars/debian.yml new file mode 100644 index 0000000..d23c869 --- /dev/null +++ b/vars/debian.yml @@ -0,0 +1,15 @@ +--- +monitored_packages_mp: + - monitoring-plugins +monitored_packages_np: + - nagios-plugins + +monitored_packages_nrpe: + - nagios-nrpe-server + +monitored_nrpe_basedir: /etc/nagios +monitored_nrpe_pidfile: /var/run/nagios/nrpe.pid + +monitored_nrpe_servicename: nagios-nrpe-server + + diff --git a/vars/redhat.yml b/vars/redhat.yml new file mode 100644 index 0000000..7bee43f --- /dev/null +++ b/vars/redhat.yml @@ -0,0 +1,34 @@ +--- +monitored_user: nrpe +monitored_group: nrpe +monitored_homedir: /var/lib/nrpe + +monitored_packages_mp: + - monitoring-plugins-disk + - monitoring-plugins-http + - monitoring-plugins-load + - monitoring-plugins-procs + - monitoring-plugins-smtp + - monitoring-plugins-ssh + - monitoring-plugins-swap + - monitoring-plugins-tcp + - monitoring-plugins-users + +monitored_packages_np: + - nagios-plugins-disk + - nagios-plugins-http + - nagios-plugins-load + - nagios-plugins-procs + - nagios-plugins-smtp + - nagios-plugins-ssh + - nagios-plugins-swap + - nagios-plugins-tcp + - nagios-plugins-users + +monitored_packages_nrpe: + - nrpe + +monitored_nrpe_basedir: /etc/nagios +monitored_nrpe_pidfile: /var/run/nrpe/nrpe.pid + + diff --git a/vars/suse.yml b/vars/suse.yml new file mode 100644 index 0000000..44ec2af --- /dev/null +++ b/vars/suse.yml @@ -0,0 +1,37 @@ +--- +monitored_packages_mp: + - monitoring-plugins-disk + - monitoring-plugins-http + - monitoring-plugins-load + - monitoring-plugins-mem + - monitoring-plugins-ntp_peer + - monitoring-plugins-ntp_time + - monitoring-plugins-procs + - monitoring-plugins-smtp + - monitoring-plugins-ssh + - monitoring-plugins-swap + - monitoring-plugins-tcp + - monitoring-plugins-users + +monitored_packages_np: + - nagios-plugins-disk + - nagios-plugins-http + - nagios-plugins-load + - nagios-plugins-mem + - nagios-plugins-ntp_peer + - nagios-plugins-ntp_time + - nagios-plugins-procs + - nagios-plugins-smtp + - nagios-plugins-ssh + - nagios-plugins-swap + - nagios-plugins-tcp + - nagios-plugins-users + + +monitored_packages_nrpe: + - nrpe + +monitored_nrpe_basedir: /etc +monitored_nrpe_pidfile: /var/run/nrpe/nrpe.pid + +