From 633f59375b02f4b450d5e2e513d800477496f111 Mon Sep 17 00:00:00 2001 From: Arne Teuke Date: Tue, 25 Jul 2017 16:30:03 +0100 Subject: [PATCH] added and linked template_rules --- manifests/nagios/objects/commands.pp | 4 +- manifests/nagios/objects/template_rules.pp | 45 +++++ manifests/nagios/objects/templates.pp | 29 +++ manifests/params.pp | 2 +- manifests/server/service.pp | 1 + templates/nagios/templates_cfg.erb | 197 +++++++++++++++++++++ templates/nagios/templates_cfg_head.erb | 7 + 7 files changed, 282 insertions(+), 3 deletions(-) create mode 100644 manifests/nagios/objects/template_rules.pp create mode 100644 manifests/nagios/objects/templates.pp create mode 100755 templates/nagios/templates_cfg.erb create mode 100644 templates/nagios/templates_cfg_head.erb diff --git a/manifests/nagios/objects/commands.pp b/manifests/nagios/objects/commands.pp index 22dc856..ca20522 100644 --- a/manifests/nagios/objects/commands.pp +++ b/manifests/nagios/objects/commands.pp @@ -19,8 +19,8 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . # @summary Class manages all commands known to NAGIOS through Puppet exports, -# and populates /etc/nagios/conf.d/nagios_commands.cfg -############################################################################## +# and populates /etc/nagios/conf.d/nagios_commands.cfg. +################################################################################ class cd_nagios::nagios::objects::commands ( ) inherits cd_nagios::params { diff --git a/manifests/nagios/objects/template_rules.pp b/manifests/nagios/objects/template_rules.pp new file mode 100644 index 0000000..19bcf6c --- /dev/null +++ b/manifests/nagios/objects/template_rules.pp @@ -0,0 +1,45 @@ +## cd_nagios::nagios::objects::template_rules.pp +# Module name: cd_nagios +# Author: Arne Teuke (arne_teuke@ConfDroid.com) +# # License: +# This file is part of cd_nagios. +# +# cd_nagios is used for providing automatic configuration of Nagios +# Copyright (C) 2016 ConfDroid (copyright@ConfDroid.com) +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# @summary Class manages /etc/nagios/conf.d/templates.cfg through concat. +################################################################################ +class cd_nagios::nagios::objects::template_rules ( + +) inherits cd_nagios::params { + + if $::fqdn == $ng_nagios_server { + + # create the templates.cfg file + + concat { $ng_target_templates: + ensure => present, + path => $ng_target_templates, + owner => $ng_user, + group => $ng_user, + mode => '0640', + selrange => s0, + selrole => object_r, + aeltype => nagios_etc_t, + seluser => system_u, + content => template[$ng_templates_head_erb] + notify => Service[$ng_service], + } + } +} diff --git a/manifests/nagios/objects/templates.pp b/manifests/nagios/objects/templates.pp new file mode 100644 index 0000000..590d05c --- /dev/null +++ b/manifests/nagios/objects/templates.pp @@ -0,0 +1,29 @@ +## cd_nagios::nagios::objects::templates.pp +# Module name: cd_nagios +# Author: Arne Teuke (arne_teuke@ConfDroid.com) +# # License: +# This file is part of cd_nagios. +# +# cd_nagios is used for providing automatic configuration of Nagios +# Copyright (C) 2016 ConfDroid (copyright@ConfDroid.com) +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# @summary Define manages populates /etc/nagios/conf.d/templates.cfg. +################################################################################ +defie cd_nagios::nagios::objects::templates ( + +) { + +$ng_target_templates = $::cd_nagios::params::ng_target_templates + +} diff --git a/manifests/params.pp b/manifests/params.pp index 66327cd..95b88ee 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -959,8 +959,8 @@ $ng_certbot_check = "${ng_certbot_archive}/${ng_webserver_name}/cert1.pe $ng_certbot_live = "${ng_certbot_main_dir}/live" # nagios - $ng_target_templates = "${ng_conf_d_dir}/templates.cfg" +$ng_templates_head_erb = 'cd_nagios/nagios/templates_cfg_head.erb' $ng_target_timeperiods = "${ng_conf_d_dir}/timeperiods.cfg" $ng_target_localhost = "${ng_conf_d_dir}/nagios_localhost.cfg" $ng_target_host = "${ng_conf_d_dir}/nagios_host.cfg" diff --git a/manifests/server/service.pp b/manifests/server/service.pp index 315f7f8..3ec4b42 100644 --- a/manifests/server/service.pp +++ b/manifests/server/service.pp @@ -29,6 +29,7 @@ class cd_nagios::server::service ( require cd_nagios::server::files require cd_nagios::server::access_rules require cd_nagios::nagios::objects::commands + require cd_nagios::nagios::objects::template_rules service { $ng_service: ensure => running, diff --git a/templates/nagios/templates_cfg.erb b/templates/nagios/templates_cfg.erb new file mode 100755 index 0000000..fad436e --- /dev/null +++ b/templates/nagios/templates_cfg.erb @@ -0,0 +1,197 @@ +############################################################################### +# TEMPLATES.CFG - SAMPLE OBJECT TEMPLATES +# +# +# NOTES: This config file provides you with some example object definition +# templates that are refered by other host, service, contact, etc. +# definitions in other config files. +# +# You don't need to keep these definitions in a separate file from your +# other object definitions. This has been done just to make things +# easier to understand. +# +############################################################################### + + + +############################################################################### +############################################################################### +# +# CONTACT TEMPLATES +# +############################################################################### +############################################################################### + +# Generic contact definition template - This is NOT a real contact, just a template! + +define contact{ + name generic-contact ; The name of this contact template + service_notification_period 24x7 ; service notifications can be sent anytime + host_notification_period 24x7 ; host notifications can be sent anytime + service_notification_options w,u,c,r,f,s ; send notifications for all service states, flapping events, and scheduled downtime events + host_notification_options d,u,r,f,s ; send notifications for all host states, flapping events, and scheduled downtime events + service_notification_commands notify-service-by-email ; send service notifications via email + host_notification_commands notify-host-by-email ; send host notifications via email + register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE! + } + + + + +############################################################################### +############################################################################### +# +# HOST TEMPLATES +# +############################################################################### +############################################################################### + +# Generic host definition template - This is NOT a real host, just a template! + +define host{ + name generic-host ; The name of this host template + notifications_enabled 1 ; Host notifications are enabled + event_handler_enabled 1 ; Host event handler is enabled + flap_detection_enabled 1 ; Flap detection is enabled + process_perf_data 1 ; Process performance data + retain_status_information 1 ; Retain status information across program restarts + retain_nonstatus_information 1 ; Retain non-status information across program restarts + notification_period 24x7 ; Send host notifications at any time + register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! + } + + +# Linux host definition template - This is NOT a real host, just a template! + +define host{ + name linux-server ; The name of this host template + use generic-host ; This template inherits other values from the generic-host template + check_period 24x7 ; By default, Linux hosts are checked round the clock + check_interval 5 ; Actively check the host every 5 minutes + retry_interval 1 ; Schedule host check retries at 1 minute intervals + max_check_attempts 10 ; Check each Linux host 10 times (max) + check_command check-host-alive ; Default command to check Linux hosts + notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day + ; Note that the notification_period variable is being overridden from + ; the value that is inherited from the generic-host template! + notification_interval 120 ; Resend notifications every 2 hours + notification_options d,u,r ; Only send notifications for specific host states + contact_groups admins ; Notifications get sent to the admins by default + register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! + } + + + +# Windows host definition template - This is NOT a real host, just a template! + +define host{ + name windows-server ; The name of this host template + use generic-host ; Inherit default values from the generic-host template + check_period 24x7 ; By default, Windows servers are monitored round the clock + check_interval 5 ; Actively check the server every 5 minutes + retry_interval 1 ; Schedule host check retries at 1 minute intervals + max_check_attempts 10 ; Check each server 10 times (max) + check_command check-host-alive ; Default command to check if servers are "alive" + notification_period 24x7 ; Send notification out at any time - day or night + notification_interval 30 ; Resend notifications every 30 minutes + notification_options d,r ; Only send notifications for specific host states + contact_groups admins ; Notifications get sent to the admins by default + hostgroups windows-servers ; Host groups that Windows servers should be a member of + register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE + } + + +# We define a generic printer template that can be used for most printers we monitor + +define host{ + name generic-printer ; The name of this host template + use generic-host ; Inherit default values from the generic-host template + check_period 24x7 ; By default, printers are monitored round the clock + check_interval 5 ; Actively check the printer every 5 minutes + retry_interval 1 ; Schedule host check retries at 1 minute intervals + max_check_attempts 10 ; Check each printer 10 times (max) + check_command check-host-alive ; Default command to check if printers are "alive" + notification_period workhours ; Printers are only used during the workday + notification_interval 30 ; Resend notifications every 30 minutes + notification_options d,r ; Only send notifications for specific host states + contact_groups admins ; Notifications get sent to the admins by default + statusmap_image printer.png + register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE + } + + +# Define a template for switches that we can reuse +define host{ + name generic-switch ; The name of this host template + use generic-host ; Inherit default values from the generic-host template + check_period 24x7 ; By default, switches are monitored round the clock + check_interval 5 ; Switches are checked every 5 minutes + retry_interval 1 ; Schedule host check retries at 1 minute intervals + max_check_attempts 10 ; Check each switch 10 times (max) + check_command check-host-alive ; Default command to check if routers are "alive" + notification_period 24x7 ; Send notifications at any time + notification_interval 30 ; Resend notifications every 30 minutes + notification_options d,r ; Only send notifications for specific host states + contact_groups admins ; Notifications get sent to the admins by default + statusmap_image switch.png + register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE + } + +# Define a template for routers that we can reuse +define host{ + name generic-router ; The name of this host template + use generic-switch ; Inherit default values from the generic-host template + statusmap_image router.png + register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE + } + + + + +############################################################################### +############################################################################### +# +# SERVICE TEMPLATES +# +############################################################################### +############################################################################### + +# Generic service definition template - This is NOT a real service, just a template! + +define service{ + name generic-service ; The 'name' of this service template + active_checks_enabled 1 ; Active service checks are enabled + passive_checks_enabled 1 ; Passive service checks are enabled/accepted + parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems) + obsess_over_service 1 ; We should obsess over this service (if necessary) + check_freshness 0 ; Default is to NOT check service 'freshness' + notifications_enabled 1 ; Service notifications are enabled + event_handler_enabled 1 ; Service event handler is enabled + flap_detection_enabled 1 ; Flap detection is enabled + process_perf_data 1 ; Process performance data + retain_status_information 1 ; Retain status information across program restarts + retain_nonstatus_information 1 ; Retain non-status information across program restarts + is_volatile 0 ; The service is not volatile + check_period 24x7 ; The service can be checked at any time of the day + max_check_attempts 3 ; Re-check the service up to 3 times in order to determine its final (hard) state + check_interval 10 ; Check the service every 10 minutes under normal conditions + retry_interval 2 ; Re-check the service every two minutes until a hard state can be determined + contact_groups admins ; Notifications get sent out to everyone in the 'admins' group + notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events + notification_interval 60 ; Re-notify about service problems every hour + notification_period 24x7 ; Notifications can be sent out at any time + register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! + } + + +# Local service definition template - This is NOT a real service, just a template! + +define service{ + name local-service ; The name of this service template + use generic-service ; Inherit default values from the generic-service definition + max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state + check_interval 5 ; Check the service every 5 minutes under normal conditions + retry_interval 1 ; Re-check the service every minute until a hard state can be determined + register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! + } + diff --git a/templates/nagios/templates_cfg_head.erb b/templates/nagios/templates_cfg_head.erb new file mode 100644 index 0000000..cbd2b0c --- /dev/null +++ b/templates/nagios/templates_cfg_head.erb @@ -0,0 +1,7 @@ +############################################################################### +### templates.cfg generated by Puppet | manual changes will be overwritten! ### +############################################################################### +########## Full reference file available at ########## +########## https://confdroid.com/2017/07/nagios-templates-cfg/ ########## +############################################################################### +# rules are created below by external puppet rules.