From 5abb52ff0675b5110907b319a14c535ec3fb11f4 Mon Sep 17 00:00:00 2001 From: 12ww1160 <12ww1160@confdroid.com> Date: Mon, 2 Mar 2026 15:01:55 +0100 Subject: [PATCH] OP#436 update Readme --- README.md | 138 ++++++++++++++++++++- manifests/nagios/objects/commands.pp | 86 ++++++------- manifests/nagios/objects/template_rules.pp | 7 +- manifests/params.pp | 2 +- 4 files changed, 181 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 9efd2db..41e76df 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ Use that value to override the default password in ENC or Hiera, if you use it. ### Additional UI users -The main user is automatically created. If you want to add more users, this should be done via the define confdroid_nagios::server::access. In your control repo, site.pp etc. address the access define like this: +The main user is automatically created. If you want to add more users, this should be done via the define `confdroid_nagios::server::access`. In your control repo, site.pp etc. address the access define like this: ```puppet confdroid_nagios::server::access { 'example': @@ -126,6 +126,25 @@ In order to add contacts for the notifications, address the define `confdroid_na This requires the contact groups to be in place as well. +Alternatively you also can create a custom class within this module and use the export command like this: + +```puppet + @@nagios_contact { 'ops': + ensure => present, + alias => 'Operations', + contact_name => 'ops', + contactgroups => 'operations', + email => 'ops@example.net', + can_submit_commands => '1', + register => '1', + use => 'generic-contact', + target => $ng_target_base_contact, + owner => $ng_user, + group => $ng_user, + mode => '0640', + } +``` + ### Adding contact groups In order to add contact groups for the notifications, address the define `confdroid_nagios::nagios::objects::add_contactgroups` in your config repo, site.pp etc. like this: @@ -138,6 +157,21 @@ In order to add contact groups for the notifications, address the define `confdr } ``` +Alternatively you also can create a custom class within this module and use the export command like this: + +```puppet + @@nagios_contactgroup { 'operations': + ensure => present, + alias => 'Operations Team', + contactgroup_name => 'operations', + owner => $ng_user, + group => $ng_user, + mode => '0640', + register => '1', + target => $ng_tgt_contactgroup_base, + } +``` + ### Adding host groups In order to add host groups, address the define `confdroid_nagios::nagios::objects::add_hostgroups` in your config repo, site.pp etc. like this: @@ -149,22 +183,116 @@ In order to add host groups, address the define `confdroid_nagios::nagios::objec } ``` -Hosts will be populated through the target.pp dynamically. +Alternatively you also can create a custom class within this module and use the export command like this: + +```puppet + @@nagios_hostgroup { 'rhel-servers': + ensure => present, + hostgroup_name => 'rhel-servers', + alias => 'RHEL Servers', + owner => $ng_user, + group => $ng_user, + mode => '0640', + register => '1', + target => $ng_target_hostgroup_base, + } +``` + +Hosts themselves will be populated through the target.pp dynamically. ### Adding service groups -ToDo +In order to add service groups, address the define `confdroid_nagios::nagios::objects::add_servicegroups` in your config repo, site.pp etc. like this: + +```puppet + confdroid_nagios::nagios::objects::add_servicegroups { 'example_servicegroup': + ng_servicegroup_name => 'example_servicegroup', + ng_servicegroup_alias => 'Example servicegroup', + } +``` + +Alternatively you also can create a custom class within this module and use the export command like this: + +```puppet + @@nagios_servicegroup { 'network-services': + ensure => present, + servicegroup_name => 'network-services', + alias => 'Network Services', + owner => $ng_user, + group => $ng_user, + mode => '0640', + register => '1', + target => $ng_target_svcgrp_base, + } +``` ### Adding time periods -ToDo +In order to add time periods, address the define `confdroid_nagios::nagios::objects::add_timeperiods` in your config repo, site.pp etc. like this: + +```puppet + confdroid_nagios::nagios::objects::add_timeperiods { 'example_timeperiod': + ng_timep_name => 'example_timeperiod', + ng_timep_alias => 'Example timeperiod', + ng_timep_monday => '00:00-00:00', + ng_timep_tuesday => '00:00-00:00', + ng_timep_wednesday => '00:00-00:00', + ng_timep_thursday => '00:00-00:00', + ng_timep_friday => '00:00-00:00', + ng_timep_saturday => '00:00-00:00', + ng_timep_sunday => '00:00-00:00', + } +``` + +Alternatively you also can create a custom class within this module and use the export command like this: + +```puppet + @@nagios_timeperiod { 'office_hours': + ensure => present, + timeperiod_name => 'office_hours', + alias => 'Office hours only, 5 Days A Week 09-05', + monday => '09:00-17:00', + tuesday => '09:00-17:00', + wednesday => '09:00-17:00', + thursday => '09:00-17:00', + friday => '09:00-17:00', + saturday => '00:00-00:00', + sunday => '00:00-00:00', + owner => $ng_user, + group => $ng_user, + mode => '0640', + register => '1', + target => $ng_tgt_timeperiods_base, + } +``` ### Adding custom commands -ToDo +Commands are defined in `confdroid_nagios::nagios::objects::commands` and deployed /etc/nagios/conf.d/nagios_commands_base.cfg through PuppetDB exports like this: + +```puppet + @@nagios_command { 'check_disk': + ensure => present, + command_name => 'check_disk', + command_line => '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$', + owner => $ng_user, + group => $ng_user, + mode => '0640', + target => $ng_target_command, + } +``` ### Adding templates +In order to add time periods, address the define `confdroid_nagios::nagios::objects::add_templates` in your config repo, site.pp etc. like this: + +```puppet + confdroid_nagios::nagios::objects::templates { 'generic contact': + ng_template_object => 'contact', + ng_template_object_name => 'generic-contact', + } +``` + ## PuppetDB A working instance of PuppetDB connected to the Puppet master is required for this to work. Installation and configuration of PuppetDB is out of scope for this module, however [cd_puppetdb](https://gitlab.confdroid.com/puppet/cd_puppetdb) is available to automate this task for you as well within a few minutes. diff --git a/manifests/nagios/objects/commands.pp b/manifests/nagios/objects/commands.pp index 70ad0a6..bf4d314 100644 --- a/manifests/nagios/objects/commands.pp +++ b/manifests/nagios/objects/commands.pp @@ -13,8 +13,8 @@ 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 => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -23,8 +23,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'notify-service-by-email', command_line => '/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -33,8 +33,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check-host-alive', command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -43,8 +43,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_disk', command_line => '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -53,8 +53,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_local_load', command_line => '$USER1$/check_load -w $ARG1$ -c $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -63,8 +63,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_local_procs', command_line => '$USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -73,8 +73,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_local_users', command_line => '$USER1$/check_users -w $ARG1$ -c $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -83,8 +83,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_local_swap', command_line => '$USER1$/check_swap -w $ARG1$ -c $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -93,8 +93,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_ftp', command_line => '$USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -103,8 +103,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_snmp', command_line => '$USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -113,8 +113,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_http', command_line => '$USER1$/check_http -I $HOSTADDRESS$ $ARG1$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -123,8 +123,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_ssh', command_line => '$USER1$/check_ssh $ARG1$ $HOSTADDRESS$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -133,8 +133,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_ping', command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -143,8 +143,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_tcp', command_line => '$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -153,8 +153,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_udp', command_line => '$USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -163,8 +163,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_nrpe', command_line => '$USER1$/check_nrpe -t 30 -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -173,8 +173,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_nagios', command_line => '$USER1$/check_nagios -F $ARG1$ -e $ARG2$ -C $ARG3$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -183,8 +183,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'check_bandwidth', command_line => '$USER1$/check_bandwidth.sh -t 30 -H $HOSTADDRESS$ linux $ARG1$ $ARG2$ $ARG3$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -193,8 +193,8 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'process-service-perfdata-file', command_line => '/bin/mv /var/log/pnp4nagios/service-perfdata /var/spool/pnp4nagios/service-perfdata.$TIMET$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } @@ -203,18 +203,18 @@ class confdroid_nagios::nagios::objects::commands ( ensure => present, command_name => 'process-host-perfdata-file', command_line => '/bin/mv /var/log/pnp4nagios/host-perfdata /var/spool/pnp4nagios/host-perfdata.$TIMET$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } - @@nagios_command { 'check_ntp_time': + @@nagios_command { 'check_ntp_time': ensure => present, command_name => 'check_ntp_time', command_line => '$USER1$/check_ntp_time -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$', - owner => 'nagios', - group => 'nagios', + owner => $ng_user, + group => $ng_user, mode => '0640', target => $ng_target_command, } diff --git a/manifests/nagios/objects/template_rules.pp b/manifests/nagios/objects/template_rules.pp index fec088d..6a95331 100644 --- a/manifests/nagios/objects/template_rules.pp +++ b/manifests/nagios/objects/template_rules.pp @@ -3,9 +3,10 @@ # Author: 12ww1160 (12ww1160@confdroid.com) # @summary Class manages /etc/nagios/conf.d/nagios_templates.cfg through # concat. -# @example confdroid_nagios::nagios::objects::templates { 'generic contact': -# ng_template_object => 'contact', -# ng_template_object_name => 'generic-contact', +# @example +# confdroid_nagios::nagios::objects::templates { 'generic contact': +# ng_template_object => 'contact', +# ng_template_object_name => 'generic-contact', # } ################################################################################ class confdroid_nagios::nagios::objects::template_rules ( diff --git a/manifests/params.pp b/manifests/params.pp index b6257af..bf83ccf 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -238,7 +238,7 @@ class confdroid_nagios::params ( $ng_tgt_svcgrp_head_erb = 'confdroid_nagios/nagios/svcgroups_cfg_head.erb' $ng_tgt_svcgrp_rule_erb = 'confdroid_nagios/nagios/svcgroups_cfg_rule.erb' $ng_target_base_contact = "${ng_conf_d_dir}/nagios_contact_base.cfg" - $ng_target_add_contact = "${ng_conf_d_dir}/nagios_contact_add.cfg" + $ng_target_add_contact = "${ng_conf_d_dir}/nagios_contact.cfg" $ng_contacts_head_erb = 'confdroid_nagios/nagios/contacts_cfg_head.erb' $ng_contacts_rule_erb = 'confdroid_nagios/nagios/contacts_cfg_rule.erb' $ng_tgt_contactgroup_base = "${ng_conf_d_dir}/nagios_contactgroup_base.cfg"