From 7e462fbd37b99e261ef5e493d8d0d0fda5bfed52 Mon Sep 17 00:00:00 2001 From: 12ww1160 <12ww1160@confdroid.com> Date: Sun, 1 Mar 2026 14:46:40 +0100 Subject: [PATCH] OP#436 add nagios contacts --- manifests/nagios/config.pp | 2 +- manifests/nagios/objects/add_contact.pp | 38 ++++++++++++++++++ manifests/nagios/objects/add_contact_rules.pp | 40 +++++++++++++++++++ manifests/nagios/objects/commands.pp | 2 +- manifests/params.pp | 5 +-- 5 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 manifests/nagios/objects/add_contact.pp create mode 100644 manifests/nagios/objects/add_contact_rules.pp diff --git a/manifests/nagios/config.pp b/manifests/nagios/config.pp index 07eadfb..a0cfb10 100644 --- a/manifests/nagios/config.pp +++ b/manifests/nagios/config.pp @@ -10,7 +10,7 @@ class confdroid_nagios::nagios::config ( require confdroid_nagios::nagios::objects::commands #require confdroid_nagios::nagios::objects::template_rules #require confdroid_nagios::nagios::objects::contacts - #require confdroid_nagios::nagios::objects::add_contact_rules + require confdroid_nagios::nagios::objects::add_contact_rules #require confdroid_nagios::nagios::objects::contactgroups #require confdroid_nagios::nagios::objects::add_contactgroups_rules #require confdroid_nagios::nagios::objects::hostgroups diff --git a/manifests/nagios/objects/add_contact.pp b/manifests/nagios/objects/add_contact.pp new file mode 100644 index 0000000..ed6d984 --- /dev/null +++ b/manifests/nagios/objects/add_contact.pp @@ -0,0 +1,38 @@ +## confdroid_nagios::nagios::objects::add_contact.pp +# Module name: confdroid_nagios +# Author: 12ww1160 (12ww1160@confdroid.com) +# @summary Define manages additional contacts known to NAGIOS through external +# Puppet rules, and populates /etc/nagios/conf.d/nagios_add_contact.cfg. +# @example +# confdroid_nagios::nagios::objects::add_contact { 'example_user': +# ng_contact_name => 'example_user', +# ng_contact_alias => 'Example User', +# ng_contact_groups => 'admins', +# ng_contact_email => 'example@example.net', +# } +# @param [string] ng_contact_name Specify the contact short name. +# @param [string] ng_contact_use which contact template to use +# @param [string] ng_contact_alias Specify the contact alias (long name). +# @param [string] ng_contact_email Specify the contact email address. +# @param [string] ng_contact_groups specify the contact group for the contact. +################################################################################ +define confdroid_nagios::nagios::objects::add_contact ( + + Optional[String] $ng_contact_name = undef, + String $ng_contact_use = 'generic-contact', + Optional[String] $ng_contact_alias = undef, + Optional[String] $ng_contact_email = undef, + Optional[String] $ng_contact_groups = undef, + +) { + $ng_nagios_server = $confdroid_nagios::params::ng_nagios_server + $ng_target_add_contact = $confdroid_nagios::params::ng_target_add_contact + $ng_contacts_rule_erb = $confdroid_nagios::params::ng_contacts_rule_erb + + if $ng_nagios_server == $fqdn { + concat::fragment { $name: + target => $ng_target_add_contact, + content => template($ng_contacts_rule_erb), + } + } +} diff --git a/manifests/nagios/objects/add_contact_rules.pp b/manifests/nagios/objects/add_contact_rules.pp new file mode 100644 index 0000000..c3add96 --- /dev/null +++ b/manifests/nagios/objects/add_contact_rules.pp @@ -0,0 +1,40 @@ +## confdroid_nagios::nagios::objects::add_contact_rules.pp +# Module name: confdroid_nagios +# Author: 12ww1160 (12ww1160@confdroid.com) +# @summary Class manages /etc/nagios/conf.d/nagios_add_contact.cfg through +# concat. +# @example confdroid_nagios::nagios::objects::add_contact { 'example_user': +# ng_contact_name => 'example_user', +# ng_contact_alias => 'Example User', +# ng_contact_groups => 'admins', +# ng_contact_email => 'example@example.net', +# } +################################################################################ +class confdroid_nagios::nagios::objects::add_contact_rules ( + +) inherits confdroid_nagios::params { + if $ng_nagios_server == $fqdn { + # manage /etc/nagios/conf.d/nagios_add_contacts.cfg + + concat { $ng_target_add_contact: + ensure => present, + path => $ng_target_add_contact, + owner => $ng_user, + group => $ng_user, + mode => '0640', + selrange => s0, + selrole => object_r, + seltype => nagios_etc_t, + seluser => system_u, + notify => Service[$ng_service], + } + + # manage file header + + concat::fragment { 'contact_header': + target => $ng_target_add_contact, + content => template($ng_contacts_head_erb), + order => '000', + } + } +} diff --git a/manifests/nagios/objects/commands.pp b/manifests/nagios/objects/commands.pp index 3d6bf11..70ad0a6 100644 --- a/manifests/nagios/objects/commands.pp +++ b/manifests/nagios/objects/commands.pp @@ -13,7 +13,7 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'notify-host-by-email', command_line => '/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTADDRESS$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTADDRESS$ is $HOSTSTATE$ **" $CONTACTEMAIL$', - owner => 'nagions', + owner => 'nagios', group => 'nagios', mode => '0640', target => $ng_target_command, diff --git a/manifests/params.pp b/manifests/params.pp index 172ffec..047276f 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -77,6 +77,8 @@ class confdroid_nagios::params ( # files $ng_nagios_cfg_file = "${ng_main_dir}/nagios.cfg" $ng_nagios_cfg_erb = 'confdroid_nagios/nagios/nagios_cfg.erb' + $ng_cgi_cfg_file = "${ng_main_dir}/cgi.cfg" + $ng_cgi_cfg_erb = 'confdroid_nagios/nagios/cgi_cfg.erb' # nagios $ng_target_templates = "${ng_conf_d_dir}/nagios_templates.cfg" @@ -117,9 +119,6 @@ class confdroid_nagios::params ( $ng_resource_erb = 'confdroid_nagios/nagios/resource_cfg.erb' ## old - $ng_main_config = "${ng_main_dir}/nagios.cfg" - $ng_cgi_cfg_file = "${ng_main_dir}/cgi.cfg" - $ng_cgi_cfg_erb = 'confdroid_nagios/nagios/cgi_cfg.erb' $ng_taccgi_erb = 'confdroid_nagios/selinux/taccgi.erb' $ng_statcgi_erb = 'confdroid_nagios/selinux/statuscgi.erb' $ng_statdat_erb = 'confdroid_nagios/selinux/statusdat.erb'