summaryrefslogtreecommitdiff
path: root/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'manifests')
-rw-r--r--manifests/apache.pp42
-rw-r--r--manifests/base.pp114
-rw-r--r--manifests/centos.pp2
-rw-r--r--manifests/debian.pp11
-rw-r--r--manifests/defaults/commands.pp6
-rw-r--r--manifests/defaults/plugins.pp2
-rw-r--r--manifests/defaults/pnp4nagios.pp5
-rw-r--r--manifests/defaults/templates.pp23
-rw-r--r--manifests/defaults/vars.pp6
-rw-r--r--manifests/init.pp47
-rw-r--r--manifests/irc_bot.pp46
-rw-r--r--manifests/irc_bot/base.pp94
-rw-r--r--manifests/irc_bot/centos.pp10
-rw-r--r--manifests/irc_bot/debian.pp8
-rw-r--r--manifests/lighttpd.pp14
-rw-r--r--manifests/nsca/client.pp6
-rw-r--r--manifests/nsca/server.pp4
-rw-r--r--manifests/plugin.pp12
-rw-r--r--manifests/plugin/deploy.pp12
-rw-r--r--manifests/plugin/scriptpaths.pp2
-rw-r--r--manifests/plugins/jabber.pp10
-rw-r--r--manifests/pnp4nagios.pp72
-rw-r--r--manifests/pnp4nagios/popup.pp18
-rw-r--r--manifests/service.pp114
-rw-r--r--manifests/service/dns.pp19
-rw-r--r--manifests/service/dns_host.pp22
-rw-r--r--manifests/service/http.pp5
-rw-r--r--manifests/service/mysql.pp9
-rw-r--r--manifests/service/ntp.pp8
-rw-r--r--manifests/service/ping.pp16
-rw-r--r--manifests/target.pp27
-rw-r--r--manifests/target/fqdn.pp13
32 files changed, 450 insertions, 349 deletions
diff --git a/manifests/apache.pp b/manifests/apache.pp
index c560e5b..a90d0ee 100644
--- a/manifests/apache.pp
+++ b/manifests/apache.pp
@@ -1,21 +1,29 @@
-class nagios::apache inherits ::apache {
- $nagios_httpd = 'apache'
- include nagios
+class nagios::apache(
+ $allow_external_cmd = false,
+ $manage_shorewall = false,
+ $manage_munin = false
+) {
+ class{'nagios':
+ httpd => 'apache',
+ allow_external_cmd => $allow_external_cmd,
+ manage_munin => $manage_munin,
+ manage_shorewall => $manage_shorewall,
+ }
- case $operatingsystem {
- 'debian': {
- file { "${nagios::defaults::vars::int_nagios_cfgdir}/apache2.conf":
- ensure => present,
- source => ["puppet:///site-nagios/configs/${fqdn}/apache2.conf",
- "puppet:///site-nagios/configs/apache2.conf",
- "puppet:///nagios/configs/apache2.conf"],
- }
+ case $::operatingsystem {
+ 'debian': {
+ file { "${nagios::defaults::vars::int_cfgdir}/apache2.conf":
+ ensure => present,
+ source => [ "puppet:///site_nagios/configs/${::fqdn}/apache2.conf",
+ "puppet:///site_nagios/configs/apache2.conf",
+ "puppet:///nagios/configs/apache2.conf"],
+ }
- apache::config::global { "nagios3.conf":
- ensure => link,
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/apache2.conf",
- require => File["${nagios::defaults::vars::int_nagios_cfgdir}/apache2.conf"],
- }
- }
+ apache::config::global { "nagios3.conf":
+ ensure => link,
+ target => "${nagios::defaults::vars::int_cfgdir}/apache2.conf",
+ require => File["${nagios::defaults::vars::int_cfgdir}/apache2.conf"],
+ }
}
+ }
}
diff --git a/manifests/base.pp b/manifests/base.pp
index 589e98b..0f8b777 100644
--- a/manifests/base.pp
+++ b/manifests/base.pp
@@ -4,7 +4,7 @@ class nagios::base {
package { 'nagios':
alias => 'nagios',
- ensure => present,
+ ensure => present,
}
service { 'nagios':
@@ -16,44 +16,36 @@ class nagios::base {
# this file should contain all the nagios_puppet-paths:
file { 'nagios_main_cfg':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/nagios.cfg",
- source => [ "puppet:///modules/site-nagios/configs/${fqdn}/nagios.cfg",
- "puppet:///modules/site-nagios/configs/${operatingsystem}/nagios.cfg",
- "puppet:///modules/site-nagios/configs/nagios.cfg",
- "puppet:///modules/nagios/configs/${operatingsystem}/nagios.cfg",
+ path => "${nagios::defaults::vars::int_cfgdir}/nagios.cfg",
+ source => [ "puppet:///modules/site_nagios/configs/${::fqdn}/nagios.cfg",
+ "puppet:///modules/site_nagios/configs/${::operatingsystem}/nagios.cfg",
+ "puppet:///modules/site_nagios/configs/nagios.cfg",
+ "puppet:///modules/nagios/configs/${::operatingsystem}/nagios.cfg",
"puppet:///modules/nagios/configs/nagios.cfg" ],
notify => Service['nagios'],
mode => 0644, owner => root, group => root;
- }
-
- file { 'nagios_commands_cfg':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/commands.cfg",
- ensure => present,
- notify => Service['nagios'],
- mode => 0644, owner => root, group => root;
}
file { 'nagios_cgi_cfg':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/cgi.cfg",
- source => [ "puppet:///modules/site-nagios/configs/${fqdn}/cgi.cfg",
- "puppet:///modules/site-nagios/configs/${operatingsystem}/cgi.cfg",
- "puppet:///modules/site-nagios/configs/cgi.cfg",
- "puppet:///modules/nagios/configs/${operatingsystem}/cgi.cfg",
+ path => "${nagios::defaults::vars::int_cfgdir}/cgi.cfg",
+ source => [ "puppet:///modules/site_nagios/configs/${::fqdn}/cgi.cfg",
+ "puppet:///modules/site_nagios/configs/${::operatingsystem}/cgi.cfg",
+ "puppet:///modules/site_nagios/configs/cgi.cfg",
+ "puppet:///modules/nagios/configs/${::operatingsystem}/cgi.cfg",
"puppet:///modules/nagios/configs/cgi.cfg" ],
mode => '0644', owner => 'root', group => 0,
notify => Service['apache'],
}
file { 'nagios_htpasswd':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/htpasswd.users",
- source => [ "puppet:///modules/site-nagios/htpasswd.users",
+ path => "${nagios::defaults::vars::int_cfgdir}/htpasswd.users",
+ source => [ "puppet:///modules/site_nagios/htpasswd.users",
"puppet:///modules/nagios/htpasswd.users" ],
mode => 0640, owner => root, group => apache;
}
file { 'nagios_private':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/private/",
- source => "puppet:///modules/common/empty",
+ path => "${nagios::defaults::vars::int_cfgdir}/private/",
ensure => directory,
purge => true,
recurse => true,
@@ -62,24 +54,21 @@ class nagios::base {
}
file { 'nagios_private_resource_cfg':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/private/resource.cfg",
- source => [ "puppet:///modules/site-nagios/configs/${operatingsystem}/private/resource.cfg.${architecture}",
- "puppet:///modules/nagios/configs/${operatingsystem}/private/resource.cfg.${architecture}" ],
+ path => "${nagios::defaults::vars::int_cfgdir}/private/resource.cfg",
+ source => [ "puppet:///modules/site_nagios/configs/${::operatingsystem}/private/resource.cfg.${::architecture}",
+ "puppet:///modules/nagios/configs/${::operatingsystem}/private/resource.cfg.${::architecture}" ],
notify => Service['nagios'],
owner => root, group => nagios, mode => '0640';
}
file { 'nagios_confd':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/",
- source => "puppet:///modules/common/empty",
+ path => "${nagios::defaults::vars::int_cfgdir}/conf.d/",
ensure => directory,
purge => true,
recurse => true,
notify => Service['nagios'],
mode => '0750', owner => root, group => nagios;
}
- Package <<| tag == 'nagios::plugin::deploy::package' |>>
- File <<| tag == 'nagios::plugin::deploy::file' |>>
Nagios_command <<||>>
Nagios_contactgroup <<||>>
Nagios_contact <<||>>
@@ -94,91 +83,90 @@ class nagios::base {
Nagios_serviceextinfo <<||>>
Nagios_service <<||>>
Nagios_timeperiod <<||>>
- File <<| tag == 'nagios_plugin' |>>
Nagios_command <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_command.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_command.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_contact <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_contact.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_contact.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_contactgroup <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_contactgroup.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_contactgroup.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_host <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_host.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_host.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_hostdependency <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostdependency.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostdependency.cfg",
notify => Service['nagios'],
}
Nagios_hostescalation <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostescalation.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostescalation.cfg",
notify => Service['nagios'],
}
Nagios_hostextinfo <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostextinfo.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostextinfo.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_hostgroup <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostgroup.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostgroup.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_service <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_service.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_service.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_servicegroup <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_servicegroup.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_servicegroup.cfg",
notify => Service['nagios'],
}
Nagios_servicedependency <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_servicedependency.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_servicedependency.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_serviceescalation <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_serviceescalation.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_serviceescalation.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_serviceextinfo <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_serviceextinfo.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_serviceextinfo.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
Nagios_timeperiod <||> {
- target => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_timeperiod.cfg",
+ target => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_timeperiod.cfg",
require => File['nagios_confd'],
notify => Service['nagios'],
}
- file{[ "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_command.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_contact.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_contactgroup.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_host.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostdependency.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostescalation.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostextinfo.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostgroup.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_hostgroupescalation.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_service.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_servicedependency.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_serviceescalation.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_serviceextinfo.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_servicegroup.cfg",
- "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_timeperiod.cfg" ]:
+ file{[ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_command.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_contact.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_contactgroup.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_host.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostdependency.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostescalation.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostextinfo.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostgroup.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_hostgroupescalation.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_service.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_servicedependency.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_serviceescalation.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_serviceextinfo.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_servicegroup.cfg",
+ "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_timeperiod.cfg" ]:
ensure => file,
replace => false,
notify => Service['nagios'],
@@ -188,17 +176,11 @@ class nagios::base {
# manage nagios cfg files
# must be defined after exported resource overrides and cfg file defs
file { 'nagios_cfgdir':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/",
- source => "puppet:///modules/common/empty",
+ path => "${nagios::defaults::vars::int_cfgdir}/",
ensure => directory,
recurse => true,
purge => true,
notify => Service['nagios'],
mode => 0755, owner => root, group => root;
}
-
- if $use_munin {
- include nagios::munin
- }
-
}
diff --git a/manifests/centos.pp b/manifests/centos.pp
index 35379b8..5a2ba23 100644
--- a/manifests/centos.pp
+++ b/manifests/centos.pp
@@ -9,7 +9,7 @@ class nagios::centos inherits nagios::base {
hasstatus => true,
}
- if ($nagios_allow_external_cmd) {
+ if $nagios::allow_external_cmd {
file { '/var/spool/nagios/cmd':
ensure => 'directory',
require => Package['nagios'],
diff --git a/manifests/debian.pp b/manifests/debian.pp
index b9e87ec..0f451e3 100644
--- a/manifests/debian.pp
+++ b/manifests/debian.pp
@@ -14,13 +14,20 @@ class nagios::debian inherits nagios::base {
File['nagios_htpasswd', 'nagios_cgi_cfg'] { group => 'www-data' }
- file { "${nagios::defaults::vars::int_nagios_cfgdir}/stylesheets":
+ file { 'nagios_commands_cfg':
+ path => "${nagios::defaults::vars::int_cfgdir}/commands.cfg",
+ ensure => present,
+ notify => Service['nagios'],
+ mode => 0644, owner => root, group => root;
+ }
+
+ file { "${nagios::defaults::vars::int_cfgdir}/stylesheets":
ensure => directory,
purge => false,
recurse => true,
}
- if ($nagios_allow_external_cmd) {
+ if $nagios::allow_external_cmd {
exec { 'nagios_external_cmd_perms_overrides':
command => 'dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw && dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3',
unless => 'dpkg-statoverride --list nagios www-data 2710 /var/lib/nagios3/rw && dpkg-statoverride --list nagios nagios 751 /var/lib/nagios3',
diff --git a/manifests/defaults/commands.pp b/manifests/defaults/commands.pp
index 1213485..bb19638 100644
--- a/manifests/defaults/commands.pp
+++ b/manifests/defaults/commands.pp
@@ -4,7 +4,7 @@ class nagios::defaults::commands {
include nagios::command::imap_pop3
# common service commands
- case $operatingsystem {
+ case $::operatingsystem {
debian,ubuntu: {
nagios_command {
check_dummy:
@@ -66,7 +66,7 @@ class nagios::defaults::commands {
check_http_url:
command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$';
check_http_url_regex:
- command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$ -e $ARG3$';
+ command_line => '$USER1$/check_http -H $ARG1$ -p $ARG2$ -u $ARG3$ -e $ARG4$';
check_https_url:
command_line => '$USER1$/check_http --ssl -H $ARG1$ -u $ARG2$';
check_https_url_regex:
@@ -124,7 +124,7 @@ class nagios::defaults::commands {
# notification commands
- $mail_cmd_location = $operatingsystem ? {
+ $mail_cmd_location = $::operatingsystem ? {
centos => '/bin/mail',
default => '/usr/bin/mail'
}
diff --git a/manifests/defaults/plugins.pp b/manifests/defaults/plugins.pp
index 18f8161..abd8b52 100644
--- a/manifests/defaults/plugins.pp
+++ b/manifests/defaults/plugins.pp
@@ -1,5 +1,4 @@
class nagios::defaults::plugins {
-
nagios::plugin {
'check_mysql_health':
source => 'nagios/plugins/check_mysql_health';
@@ -8,5 +7,4 @@ class nagios::defaults::plugins {
'check_dnsbl':
source => 'nagios/plugins/check_dnsbl';
}
-
}
diff --git a/manifests/defaults/pnp4nagios.pp b/manifests/defaults/pnp4nagios.pp
index f6556c9..ff918b6 100644
--- a/manifests/defaults/pnp4nagios.pp
+++ b/manifests/defaults/pnp4nagios.pp
@@ -10,8 +10,9 @@ class nagios::defaults::pnp4nagios {
# nagios host templates
# http://docs.pnp4nagios.org/de/pnp-0.6/webfe
-
- # this doesn't work, see manifests/pnp4nagios.pp
+
+ # this doesn't work, see manifests/pnp4nagios.pp
+
#nagios_host { 'host-pnp':
# action_url => '/pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_',
# register => 0,
diff --git a/manifests/defaults/templates.pp b/manifests/defaults/templates.pp
index c97eee4..9711dd4 100644
--- a/manifests/defaults/templates.pp
+++ b/manifests/defaults/templates.pp
@@ -1,15 +1,14 @@
class nagios::defaults::templates {
- include nagios::defaults::vars
-
- file { 'nagios_templates':
- path => "${nagios::defaults::vars::int_nagios_cfgdir}/conf.d/nagios_templates.cfg",
- source => [ "puppet:///modules/site-nagios/configs/${fqdn}/nagios_templates.cfg",
- "puppet:///modules/site-nagios/configs/${operatingsystem}/nagios_templates.cfg",
- "puppet:///modules/site-nagios/configs/nagios_templates.cfg",
- "puppet:///modules/nagios/configs/${operatingsystem}/nagios_templates.cfg",
- "puppet:///modules/nagios/configs/nagios_templates.cfg" ],
- notify => Service['nagios'],
- mode => 0644, owner => root, group => root;
- }
+ include nagios::defaults::vars
+ file { 'nagios_templates':
+ path => "${nagios::defaults::vars::int_cfgdir}/conf.d/nagios_templates.cfg",
+ source => [ "puppet:///modules/site_nagios/configs/${::fqdn}/nagios_templates.cfg",
+ "puppet:///modules/site_nagios/configs/${::operatingsystem}/nagios_templates.cfg",
+ "puppet:///modules/site_nagios/configs/nagios_templates.cfg",
+ "puppet:///modules/nagios/configs/${::operatingsystem}/nagios_templates.cfg",
+ "puppet:///modules/nagios/configs/nagios_templates.cfg" ],
+ notify => Service['nagios'],
+ mode => 0644, owner => root, group => root;
+ }
}
diff --git a/manifests/defaults/vars.pp b/manifests/defaults/vars.pp
index 6302f13..87f41f8 100644
--- a/manifests/defaults/vars.pp
+++ b/manifests/defaults/vars.pp
@@ -1,10 +1,10 @@
class nagios::defaults::vars {
- case $nagios_cfgdir {
- '': { $int_nagios_cfgdir = $operatingsystem ? {
+ case $nagios::cfgdir {
+ '': { $int_cfgdir = $::operatingsystem ? {
centos => '/etc/nagios/',
default => '/etc/nagios3'
}
}
- default: { $int_nagios_cfgdir = $nagios_cfgdir }
+ default: { $int_cfgdir = $nagios::cfgdir }
}
}
diff --git a/manifests/init.pp b/manifests/init.pp
index 1aecc3a..5cbd3f3 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -8,28 +8,37 @@
# Marcel Härry haerry+puppet(at)puzzle.ch
# Simon Josi josi+puppet(at)puzzle.ch
#
-# This program is free software; you can redistribute
-# it and/or modify it under the terms of the GNU
-# General Public License version 3 as published by
+# This program is free software; you can redistribute
+# it and/or modify it under the terms of the GNU
+# General Public License version 3 as published by
# the Free Software Foundation.
#
-class nagios {
- case $nagios_httpd {
- 'absent': { }
- 'lighttpd': { include lighttpd }
- 'apache': { include apache }
- default: { include apache }
+# manage nagios
+class nagios(
+ $httpd = 'apache',
+ $allow_external_cmd = false,
+ $manage_shorewall = false,
+ $manage_munin = false
+) {
+ case $nagios::httpd {
+ 'absent': { }
+ 'lighttpd': { include ::lighttpd }
+ 'apache': { include ::apache }
+ default: { include ::apache }
+ }
+ case $::operatingsystem {
+ 'centos': {
+ $cfgdir = '/etc/nagios'
+ include nagios::centos
}
- case $operatingsystem {
- 'centos': {
- $nagios_cfgdir = '/etc/nagios'
- include nagios::centos
- }
- 'debian': {
- $nagios_cfgdir = '/etc/nagios3'
- include nagios::debian
- }
- default: { fail("No such operatingsystem: $operatingsystem yet defined") }
+ 'debian': {
+ $cfgdir = '/etc/nagios3'
+ include nagios::debian
}
+ default: { fail("No such operatingsystem: ${::operatingsystem} yet defined") }
+ }
+ if $manage_munin {
+ include nagios::munin
+ }
}
diff --git a/manifests/irc_bot.pp b/manifests/irc_bot.pp
index 7629b94..7e934ef 100644
--- a/manifests/irc_bot.pp
+++ b/manifests/irc_bot.pp
@@ -1,22 +1,50 @@
-class nagios::irc_bot {
- if ( ! ($nagios_nsa_server and $nagios_nsa_nickname and $nagios_nsa_channel) ) {
- fail("Please provide values at least for \$nagios_nsa_server, \$nagios_nsa_nickname and \$nagios_nsa_channel")
+class nagios::irc_bot(
+ $nsa_socket = 'absent',
+ $nsa_server,
+ $nsa_port = 6667,
+ $nsa_nickname,
+ $nsa_password = '',
+ $nsa_channel,
+ $nsa_pidfile = 'absent',
+ $nsa_realname = 'Nagios',
+ $nsa_usenotices = false,
+ $nsa_commandfile = 'absent'
+) {
+ $real_nsa_socket = $nsa_socket ? {
+ 'absent' => $::operatingsystem ? {
+ centos => '/var/run/nagios-nsa/nsa.socket',
+ default => '/var/run/nagios3/nsa.socket'
+ },
+ default => $nsa_socket,
+ }
+ $real_nsa_pidfile = $nsa_pidfile ? {
+ 'absent' => $::operatingsystem ? {
+ centos => '/var/run/nagios-nsa/nsa.pid',
+ default => '/var/run/nagios3/nsa.pid'
+ },
+ default => $nsa_pidfile,
+ }
+ $real_nsa_commandfile = $nsa_commandfile ? {
+ 'absent' => $::operatingsystem ? {
+ centos => '/var/spool/nagios/cmd/nagios.cmd',
+ default => '/var/lib/nagios3/rw/nagios.cmd'
+ },
+ default => $nsa_commandfile,
}
- case $operatingsystem {
+ case $::operatingsystem {
centos: {
- $nagios_nsa_default_socket = '/var/run/nagios-nsa/nsa.socket'
- $nagios_nsa_default_pidfile = '/var/run/nagios-nsa/nsa.pid'
include nagios::irc_bot::centos
}
+ debian,ubuntu: {
+ include nagios::irc_bot::debian
+ }
default: {
- $nagios_nsa_default_socket = '/var/run/nagios3/nsa.socket'
- $nagios_nsa_default_pidfile = '/var/run/nagios3/nsa.pid'
include nagios::irc_bot::base
}
}
- if $use_shorewall {
+ if $nagios::manage_shorewall {
include shorewall::rules::out::irc
}
}
diff --git a/manifests/irc_bot/base.pp b/manifests/irc_bot/base.pp
index c36d8e6..fff9da4 100644
--- a/manifests/irc_bot/base.pp
+++ b/manifests/irc_bot/base.pp
@@ -1,69 +1,41 @@
class nagios::irc_bot::base {
+ file {
+ '/usr/local/bin/riseup-nagios-client.pl':
+ source => 'puppet:///modules/nagios/irc_bot/riseup-nagios-client.pl',
+ owner => root, group => 0, mode => '0755';
- # Default values for the two first variables are defined in nagios::irc_bot
- $nagios_nsa_socket = $nagios_nsa_socket ? {
- '' => $nagios_nsa_default_socket,
- default => $nagios_nsa_socket,
- }
- $nagios_nsa_pidfile = $nagios_nsa_pidfile ? {
- '' => $nagios_nsa_default_pidfile,
- default => $nagios_nsa_pidfile,
- }
- $nagios_nsa_port = $nagios_nsa_port ? {
- '' => '6667',
- default => $nagios_nsa_port,
- }
- $nagios_nsa_realname = $nagios_nsa_realname ? {
- '' => 'Nagios',
- default => $nagios_nsa_realname,
- }
+ '/usr/local/bin/riseup-nagios-server.pl':
+ source => 'puppet:///modules/nagios/irc_bot/riseup-nagios-server.pl',
+ owner => root, group => 0, mode => '0755';
- if (! $nagios_nsa_password) {
- $nagios_nsa_password = ''
- }
+ '/etc/init.d/nagios-nsa':
+ content => template("nagios/irc_bot/${::operatingsystem}/nagios-nsa.sh.erb"),
+ require => File['/usr/local/bin/riseup-nagios-server.pl'],
+ owner => root, group => 0, mode => '0755';
- if (! $nagios_nsa_usenotices) {
- $nagios_nsa_usenotices = ''
- }
-
- file { "/usr/local/bin/riseup-nagios-client.pl":
- owner => root, group => 0, mode => 0755,
- source => "puppet:///modules/nagios/irc_bot/riseup-nagios-client.pl",
- }
- file { "/usr/local/bin/riseup-nagios-server.pl":
- owner => root, group => 0, mode => 0755,
- source => "puppet:///modules/nagios/irc_bot/riseup-nagios-server.pl",
- }
- file { "/etc/init.d/nagios-nsa":
- owner => root, group => 0, mode => 0755,
- content => template("nagios/irc_bot/${operatingsystem}/nagios-nsa.sh.erb"),
- require => File["/usr/local/bin/riseup-nagios-server.pl"],
- }
- file { "/etc/nagios_nsa.cfg":
- ensure => present,
- owner => nagios, group => 0, mode => 0400,
- content => template('nagios/irc_bot/nsa.cfg.erb'),
- notify => Service["nagios-nsa"],
- }
+ '/etc/nagios_nsa.cfg':
+ ensure => present,
+ content => template('nagios/irc_bot/nsa.cfg.erb'),
+ owner => nagios, group => 0, mode => '0400',
+ notify => Service['nagios-nsa'];
+ }
- package { "libnet-irc-perl":
- ensure => present,
- }
+ package { 'libnet-irc-perl':
+ ensure => present,
+ }
- service { "nagios-nsa":
- ensure => "running",
- hasstatus => true,
- enable => true,
- require => [File["/etc/nagios_nsa.cfg"],
- File["/etc/init.d/nagios-nsa"],
- Package["libnet-irc-perl"],
- Service['nagios'] ],
- }
+ service { 'nagios-nsa':
+ ensure => 'running',
+ hasstatus => true,
+ require => [ File['/etc/nagios_nsa.cfg'],
+ Package['libnet-irc-perl'],
+ Service['nagios'] ],
+ }
- nagios_command {
- "notify-by-irc":
- command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($SERVICEDESC$) $NOTIFICATIONTYPE$ $SERVICEATTEMPT$/$MAXSERVICEATTEMPTS$ $SERVICESTATETYPE$ $SERVICEEXECUTIONTIME$s $SERVICELATENCY$s $SERVICEOUTPUT$ $SERVICEPERFDATA$"';
- "host-notify-by-irc":
- command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($HOSTALIAS$) $NOTIFICATIONTYPE$ $HOSTATTEMPT$/$MAXHOSTATTEMPTS$ $HOSTSTATETYPE$ took $HOSTEXECUTIONTIME$s $HOSTOUTPUT$ $HOSTPERFDATA$ $HOSTLATENCY$s"';
- }
+ nagios_command {
+ 'notify-by-irc':
+ command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($SERVICEDESC$) $NOTIFICATIONTYPE$ n.$SERVICEATTEMPT$ $SERVICESTATETYPE$ $SERVICEEXECUTIONTIME$s $SERVICELATENCY$s $SERVICEOUTPUT$ $SERVICEPERFDATA$"';
+ 'host-notify-by-irc':
+ command_line => '/usr/local/bin/riseup-nagios-client.pl "$HOSTNAME$ ($HOSTALIAS$) $NOTIFICATIONTYPE$ n.$HOSTATTEMPT$ $HOSTSTATETYPE$ took $HOSTEXECUTIONTIME$s $HOSTOUTPUT$ $HOSTPERFDATA$ $HOSTLATENCY$s"';
+ }
}
diff --git a/manifests/irc_bot/centos.pp b/manifests/irc_bot/centos.pp
index e77e93a..d7b1906 100644
--- a/manifests/irc_bot/centos.pp
+++ b/manifests/irc_bot/centos.pp
@@ -1,7 +1,9 @@
class nagios::irc_bot::centos inherits nagios::irc_bot::base {
+ Package['libnet-irc-perl']{
+ name => 'perl-Net-IRC',
+ }
- Package['libnet-irc-perl']{
- name => 'perl-Net-IRC',
- }
-
+ Service['nagios-nsa']{
+ enable => true,
+ }
}
diff --git a/manifests/irc_bot/debian.pp b/manifests/irc_bot/debian.pp
new file mode 100644
index 0000000..93ea64b
--- /dev/null
+++ b/manifests/irc_bot/debian.pp
@@ -0,0 +1,8 @@
+class nagios::irc_bot::debian inherits nagios::irc_bot::base {
+ exec { "nagios_nsa_init_script":
+ command => "/usr/sbin/update-rc.d nagios-nsa defaults",
+ unless => "/bin/ls /etc/rc3.d/ | /bin/grep nagios-nsa",
+ require => File["/etc/init.d/nagios-nsa"],
+ before => Service['nagios-nsa'],
+ }
+}
diff --git a/manifests/lighttpd.pp b/manifests/lighttpd.pp
index 27aff43..0f29896 100644
--- a/manifests/lighttpd.pp
+++ b/manifests/lighttpd.pp
@@ -1,4 +1,12 @@
-class nagios::lighttpd {
- $nagios_httpd = 'lighttpd'
- include nagios
+class nagios::lighttpd(
+ $allow_external_cmd = false,
+ $manage_shorewall = false,
+ $manage_munin = false
+) {
+ class{'nagios':
+ httpd => 'lighttpd',
+ allow_external_cmd => $allow_external_cmd,
+ manage_munin => $manage_munin,
+ manage_shorewall => $manage_shorewall,
+ }
}
diff --git a/manifests/nsca/client.pp b/manifests/nsca/client.pp
index 6e2c472..e58721d 100644
--- a/manifests/nsca/client.pp
+++ b/manifests/nsca/client.pp
@@ -1,10 +1,10 @@
class nagios::nsca::client {
package { 'nsca': ensure => installed }
-
+
file { '/etc/send_nsca.cfg':
- source => [ "puppet:///modules/site-nagios/nsca/{$fqdn}/send_nsca.cfg",
- "puppet:///modules/site-nagios/nsca/send_nsca.cfg",
+ source => [ "puppet:///modules/site_nagios/nsca/{$::fqdn}/send_nsca.cfg",
+ "puppet:///modules/site_nagios/nsca/send_nsca.cfg",
"puppet:///modules/nagios/nsca/send_nsca.cfg" ],
owner => 'nagios',
group => 'nogroup',
diff --git a/manifests/nsca/server.pp b/manifests/nsca/server.pp
index 238e49e..bd5389d 100644
--- a/manifests/nsca/server.pp
+++ b/manifests/nsca/server.pp
@@ -10,8 +10,8 @@ class nagios::nsca::server {
}
file { '/etc/nsca.cfg':
- source => [ "puppet:///modules/site-nagios/nsca/{$fqdn}/nsca.cfg",
- "puppet:///modules/site-nagios/nsca/nsca.cfg",
+ source => [ "puppet:///modules/site_nagios/nsca/{$::fqdn}/nsca.cfg",
+ "puppet:///modules/site_nagios/nsca/nsca.cfg",
"puppet:///modules/nagios/nsca/nsca.cfg" ],
owner => 'nagios',
group => 'nogroup',
diff --git a/manifests/plugin.pp b/manifests/plugin.pp
index abaa6e5..d32606b 100644
--- a/manifests/plugin.pp
+++ b/manifests/plugin.pp
@@ -2,15 +2,15 @@ define nagios::plugin(
$source = 'absent',
$ensure = present
){
- @@file{$name:
- path => $hardwaremodel ? {
- 'x86_64' => "/usr/lib64/nagios/plugins/$name",
- default => "/usr/lib/nagios/plugins/$name",
+ file{$name:
+ path => $::hardwaremodel ? {
+ 'x86_64' => "/usr/lib64/nagios/plugins/${name}",
+ default => "/usr/lib/nagios/plugins/${name}",
},
ensure => $ensure,
source => $source ? {
- 'absent' => "puppet:///modules/nagios/plugins/$name",
- default => "puppet:///modules/$source"
+ 'absent' => "puppet:///modules/nagios/plugins/${name}",
+ default => "puppet:///modules/${source}"
},
tag => 'nagios_plugin',
require => Package['nagios-plugins'],
diff --git a/manifests/plugin/deploy.pp b/manifests/plugin/deploy.pp
index 75f87d7..3f2a1a4 100644
--- a/manifests/plugin/deploy.pp
+++ b/manifests/plugin/deploy.pp
@@ -5,26 +5,26 @@ define nagios::plugin::deploy($source = '', $ensure = 'present', $config = '', $
default => $ensure
}
$real_source = $source ? {
- '' => "nagios/plugins/$plugin_src",
+ '' => "nagios/plugins/${plugin_src}",
default => $source
}
if !defined(Package[$require_package]) {
- @@package { $require_package:
+ package { $require_package:
ensure => installed,
tag => "nagios::plugin::deploy::package";
}
}
-
+
include nagios::plugin::scriptpaths
- @@file { "nagios_plugin_${name}":
+ file { "nagios_plugin_${name}":
path => "$nagios::plugin::scriptpaths::script_path/${name}",
- source => "puppet://$server/modules/$real_source",
+ source => "puppet:///modules/${real_source}",
mode => 0755, owner => root, group => 0,
require => Package[$require_package],
tag => "nagios::plugin::deploy::file";
}
# register the plugin
- @@nagios::plugin{$name: ensure => $ensure, require => Package['nagios-plugins'] }
+ nagios::plugin{$name: ensure => $ensure, require => Package['nagios-plugins'] }
}
diff --git a/manifests/plugin/scriptpaths.pp b/manifests/plugin/scriptpaths.pp
index 6065709..9cd4b5d 100644
--- a/manifests/plugin/scriptpaths.pp
+++ b/manifests/plugin/scriptpaths.pp
@@ -1,5 +1,5 @@
class nagios::plugin::scriptpaths {
- case $hardwaremodel {
+ case $::hardwaremodel {
x86_64: { $script_path = "/usr/lib64/nagios/plugins/" }
default: { $script_path = "/usr/lib/nagios/plugins" }
}
diff --git a/manifests/plugins/jabber.pp b/manifests/plugins/jabber.pp
new file mode 100644
index 0000000..380a5c0
--- /dev/null
+++ b/manifests/plugins/jabber.pp
@@ -0,0 +1,10 @@
+class nagios::plugins::jabber {
+
+ # for check_jabber_login
+ require rubygems::xmpp4r
+
+ nagios::plugin { 'check_jabber_login':
+ source => 'nagios/plugins/check_jabber_login'
+ }
+}
+
diff --git a/manifests/pnp4nagios.pp b/manifests/pnp4nagios.pp
index 7c960a7..d8ee85e 100644
--- a/manifests/pnp4nagios.pp
+++ b/manifests/pnp4nagios.pp
@@ -1,57 +1,67 @@
class nagios::pnp4nagios {
include nagios::defaults::pnp4nagios
- package { pnp4nagios:
+ package { 'pnp4nagios':
ensure => installed }
- # unfortunatly i didn't find a way to use nagios_host and nagios_service definition, because
- # imho puppet can't handle the "name" variable needed in these 2 definitions
- # so we need to copy a file here.
+ # unfortunatly i didn't find a way to use nagios_host and nagios_service
+ # definition, because imho puppet can't handle the "name" variable
+ # needed in these 2 definitions so we need to copy a file here.
file { 'pnp4nagios-templates.cfg':
- path => "${nagios::defaults::vars::int_cfgdir}/conf.d/pnp4nagios-templates.cfg",
- source => [ "puppet:///modules/site-nagios/pnp4nagios/pnp4nagios-templates.cfg",
- "puppet:///modules/nagios/pnp4nagios/pnp4nagios-templates.cfg" ],
- mode => 0644, owner => root, group => root,
- notify => Service['nagios'],
+ path => "${nagios::defaults::vars::int_cfgdir}/conf.d/pnp4nagios-templates.cfg",
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/pnp4nagios-templates.cfg',
+ 'puppet:///modules/site-nagios/pnp4nagios/pnp4nagios-templates.cfg',
+ 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-templates.cfg' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['nagios'],
}
-
+
file { 'apache.conf':
- path => "/etc/pnp4nagios/apache.conf",
- source => [ "puppet:///modules/site-nagios/pnp4nagios/apache.conf",
- "puppet:///modules/nagios/pnp4nagios/apache.conf" ],
- mode => 0644, owner => root, group => root,
- notify => Service['apache'],
+ path => '/etc/pnp4nagios/apache.conf',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/apache.conf',
+ 'puppet:///modules/site-nagios/pnp4nagios/apache.conf',
+ 'puppet:///modules/nagios/pnp4nagios/apache.conf' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['apache'],
require => Package['pnp4nagios'],
}
# run npcd as daemon
file { '/etc/default/npcd':
- path => "/etc/default/npcd",
- source => [ "puppet:///modules/site-nagios/pnp4nagios/npcd",
- "puppet:///modules/nagios/pnp4nagios/npcd" ],
- mode => 0644, owner => root, group => root,
+ path => '/etc/default/npcd',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/npcd',
+ 'puppet:///modules/site-nagios/pnp4nagios/npcd',
+ 'puppet:///modules/nagios/pnp4nagios/npcd' ],
+ mode => '0644',
+ owner => root,
+ group => root,
notify => Service['npcd'];
}
service { 'npcd':
- ensure => running,
- enable => true,
- hasstatus => true,
- require => Package['pnp4nagios'],
+ ensure => running,
+ enable => true,
+ hasstatus => true,
+ require => Package['pnp4nagios'],
}
-
+
# modify action.gif
-
+
file { '/usr/share/nagios3/htdocs/images/action.gif':
- path => "/usr/share/nagios3/htdocs/images/action.gif",
- source => [ "puppet:///modules/site-nagios/pnp4nagios/action.gif",
- "puppet:///modules/nagios/pnp4nagios/action.gif" ],
- mode => 0644, owner => root, group => root,
+ path => '/usr/share/nagios3/htdocs/images/action.gif',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/action.gif',
+ 'puppet:///modules/site-nagios/pnp4nagios/action.gif',
+ 'puppet:///modules/nagios/pnp4nagios/action.gif' ],
+ mode => '0644',
+ owner => root,
+ group => root,
notify => Service['nagios'];
}
-
-
}
diff --git a/manifests/pnp4nagios/popup.pp b/manifests/pnp4nagios/popup.pp
index a8de7c7..b90f163 100644
--- a/manifests/pnp4nagios/popup.pp
+++ b/manifests/pnp4nagios/popup.pp
@@ -1,17 +1,21 @@
class nagios::pnp4nagios::popup inherits nagios::pnp4nagios {
File['pnp4nagios-templates.cfg']{
- source => [ "puppet:///modules/site-nagios/pnp4nagios/pnp4nagios-popup-templates.cfg",
- "puppet:///modules/nagios/pnp4nagios/pnp4nagios-popup-templates.cfg" ],
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/pnp4nagios-popup-templates.cfg',
+ 'puppet:///modules/site-nagios/pnp4nagios/pnp4nagios-popup-templates.cfg',
+ 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-popup-templates.cfg' ],
}
- file { "/usr/share/nagios3/htdocs/ssi":
+ file { '/usr/share/nagios3/htdocs/ssi':
ensure => directory }
file { 'status-header.ssi':
- path => "/usr/share/nagios3/htdocs/ssi/status-header.ssi",
- source => [ "puppet:///modules/site-nagios/pnp4nagios/status-header.ssi",
- "puppet:///modules/nagios/pnp4nagios/status-header.ssi"],
- mode => 0644, owner => root, group => root,
+ path => '/usr/share/nagios3/htdocs/ssi/status-header.ssi',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/status-header.ssi',
+ 'puppet:///modules/site-nagios/pnp4nagios/status-header.ssi',
+ 'puppet:///modules/nagios/pnp4nagios/status-header.ssi' ],
+ mode => '0644',
+ owner => root,
+ group => root,
notify => Service['nagios'],
}
}
diff --git a/manifests/service.pp b/manifests/service.pp
index 55b2254..134d1f7 100644
--- a/manifests/service.pp
+++ b/manifests/service.pp
@@ -1,82 +1,88 @@
define nagios::service (
- $ensure = present,
- $host_name = $fqdn,
- $check_command,
- $check_period = '',
- $normal_check_interval = '',
- $retry_check_interval = '',
- $max_check_attempts = '',
- $notification_interval = '',
- $notification_period = '',
- $notification_options = '',
- $contact_groups = '',
- $use = 'generic-service',
- $service_description = 'absent',
- $use_nrpe = '',
- $nrpe_args = '',
- $nrpe_timeout = 10 )
-{
+ $ensure = present,
+ $host_name = $::fqdn,
+ $check_command = 'absent',
+ $check_period = '',
+ $normal_check_interval = '',
+ $retry_check_interval = '',
+ $max_check_attempts = '',
+ $notification_interval = '',
+ $notification_period = '',
+ $notification_options = '',
+ $contact_groups = '',
+ $use = 'generic-service',
+ $service_description = 'absent',
+ $use_nrpe = '',
+ $nrpe_args = '',
+ $nrpe_timeout = 10
+) {
- # TODO: this resource should normally accept all nagios_host parameters
+ # TODO: this resource should normally accept all nagios_host parameters
- $real_name = "${hostname}_${name}"
+ $real_name = "${::hostname}_${name}"
- if ($use_nrpe == 'true') {
- include nagios::command::nrpe_timeout
+ @@nagios_service { "${real_name}":
+ ensure => $ensure,
+ notify => Service[nagios];
+ }
- if ($nrpe_args != '') {
- $real_check_command = "check_nrpe_timeout!$nrpe_timeout!$check_command!\"$nrpe_args\""
- }
- else {
- $real_check_command = "check_nrpe_1arg_timeout!$nrpe_timeout!$check_command"
- }
+ if $ensure != 'absent' {
+ if $check_comand == 'absent' {
+ fail("Must pass a check_command to ${name} if it should be present")
}
- else {
- $real_check_command = "$check_command"
+ if ($use_nrpe == 'true') {
+ include nagios::command::nrpe_timeout
+
+ if ($nrpe_args != '') {
+ $real_check_command = "check_nrpe_timeout!$nrpe_timeout!$check_command!\"$nrpe_args\""
+ } else {
+ $real_check_command = "check_nrpe_1arg_timeout!$nrpe_timeout!$check_command"
+ }
+ } else {
+ $real_check_command = "$check_command"
}
- @@nagios_service { "${real_name}":
- ensure => $ensure,
- check_command => $real_check_command,
- host_name => $host_name,
- use => $use,
- notify => Service[nagios],
- service_description => $service_description ?{
- 'absent' => $name,
- default => $service_description
- }
+ Nagios_service["${real_name}"] {
+ check_command => $check_command,
+ host_name => $host_name,
+ use => $use,
+ service_description => $service_description ?{
+ 'absent' => $name,
+ default => $service_description
+ }
}
if ($check_period != '') {
- Nagios_service["${real_name}"] { check_period => $check_period }
+ Nagios_service["${real_name}"] { check_period => $check_period }
}
-
+
if ($normal_check_interval != '') {
- Nagios_service["${real_name}"] { normal_check_interval => $normal_check_interval }
+ Nagios_service["${real_name}"] { normal_check_interval => $normal_check_interval }
}
-
+
if ($retry_check_interval != '') {
- Nagios_service["${real_name}"] { retry_check_interval => $retry_check_interval }
+ Nagios_service["${real_name}"] { retry_check_interval => $retry_check_interval }
}
-
+
if ($max_check_attempts != '') {
- Nagios_service["${real_name}"] { max_check_attempts => $max_check_attempts }
+ Nagios_service["${real_name}"] { max_check_attempts => $max_check_attempts }
}
-
+
if ($notification_interval != '') {
- Nagios_service["${real_name}"] { notification_interval => $notification_interval }
+ Nagios_service["${real_name}"] { notification_interval => $notification_interval }
}
-
+
if ($notification_period != '') {
- Nagios_service["${real_name}"] { notification_period => $notification_period }
+ Nagios_service["${real_name}"] { notification_period => $notification_period }
}
-
+
if ($notification_options != '') {
- Nagios_service["${real_name}"] { notification_options => $notification_options }
+ Nagios_service["${real_name}"] { notification_options => $notification_options }
}
-
+
if ($contact_groups != '') {
- Nagios_service["${real_name}"] { contact_groups => $contact_groups }
+ Nagios_service["${real_name}"] { contact_groups => $contact_groups }
}
+ }
}
diff --git a/manifests/service/dns.pp b/manifests/service/dns.pp
new file mode 100644
index 0000000..5ef6e3e
--- /dev/null
+++ b/manifests/service/dns.pp
@@ -0,0 +1,19 @@
+define nagios::service::dns(
+ $host_name = $::fqdn,
+ $comment = $name,
+ $check_domain = $name,
+ $ip
+){
+ if $name != $comment {
+ $check_name = "${comment}_${name}_${::hostname}"
+ } else {
+ $check_name = "${name}_${::hostname}"
+ }
+
+ nagios::service{
+ $check_name:
+ check_command => "check_dns2!${check_domain}!${ip}",
+ host_name => $host_name,
+ service_description => "check if ${::host_name} is resolving ${check_domain}";
+ }
+}
diff --git a/manifests/service/dns_host.pp b/manifests/service/dns_host.pp
new file mode 100644
index 0000000..d88f373
--- /dev/null
+++ b/manifests/service/dns_host.pp
@@ -0,0 +1,22 @@
+# add a special host and monitor
+# it's dns service
+define nagios::service::dns_host(
+ $check_domain,
+ $host_alias,
+ $parent,
+ $ip
+){
+ @@nagios_host{$name:
+ address => $ip,
+ alias => $host_alias,
+ use => 'generic-host',
+ parents => $parent,
+ }
+
+ nagios::service::dns{$name:
+ host_name => $name,
+ comment => 'public_ns',
+ check_domain => $check_domain,
+ ip => $ip,
+ }
+}
diff --git a/manifests/service/http.pp b/manifests/service/http.pp
index 8fd5059..ef63abb 100644
--- a/manifests/service/http.pp
+++ b/manifests/service/http.pp
@@ -6,6 +6,7 @@
define nagios::service::http(
$ensure = present,
$check_domain = 'absent',
+ $port = '80',
$check_url = '/',
$check_code = 'OK',
$use = 'generic-service',
@@ -27,7 +28,7 @@ define nagios::service::http(
nagios::service{"httprd_${name}":
ensure => $ensure,
use => $use,
- check_command => "check_http_url_regex!${real_check_domain}!${check_url}!'301'",
+ check_command => "check_http_url_regex!${real_check_domain}!${port}!${check_url}!'301'",
}
}
}
@@ -38,7 +39,7 @@ define nagios::service::http(
nagios::service{"http_${name}_${check_code}":
ensure => $ensure,
use => $use,
- check_command => "check_http_url_regex!${real_check_domain}!${check_url}!'${check_code}'",
+ check_command => "check_http_url_regex!${real_check_domain}!${port}!${check_url}!'${check_code}'",
}
}
}
diff --git a/manifests/service/mysql.pp b/manifests/service/mysql.pp
index 2fde402..2c74717 100644
--- a/manifests/service/mysql.pp
+++ b/manifests/service/mysql.pp
@@ -1,11 +1,10 @@
-# Checks a mysql instance via tcp or socket
-
+# Checks a mysql instance via tcp or socket
define nagios::service::mysql(
$ensure = present,
$check_host = 'absent',
$check_port = '3306',
$check_username = 'nagios',
- $check_password = $nagios_mysql_password,
+ $check_password,
$check_database = 'information_schema',
$check_warning = undef,
$check_critical = undef,
@@ -51,9 +50,9 @@ define nagios::service::mysql(
}
}
}
-
+
nagios::service { "mysql_health_${name}":
ensure => $ensure,
- check_command => "check_mysql_health!${real_check_host}!${check_port}!${check_username}!${check_password}!${check_health_mode}!${check_database}${real_check_name}${real_check_warning}${real_check_critical}",
+ check_command => "check_mysql_health!${real_check_host}!${check_port}!${check_username}!'${check_password}'!${check_health_mode}!${check_database}${real_check_name}${real_check_warning}${real_check_critical}",
}
}
diff --git a/manifests/service/ntp.pp b/manifests/service/ntp.pp
index eca255a..b3cde2a 100644
--- a/manifests/service/ntp.pp
+++ b/manifests/service/ntp.pp
@@ -1,9 +1,9 @@
# manifests/service/ntp.pp
class nagios::service::ntp {
- nagios::service{ "check_ntp":
- check_command => "check_ntp_time",
- host_name => $fqdn,
- }
+ nagios::service{ "check_ntp":
+ check_command => "check_ntp_time",
+ host_name => $::fqdn,
+ }
}
diff --git a/manifests/service/ping.pp b/manifests/service/ping.pp
index c705c68..f1c8d87 100644
--- a/manifests/service/ping.pp
+++ b/manifests/service/ping.pp
@@ -1,13 +1,9 @@
define nagios::service::ping(
- $ensure = present
+ $ensure = present,
+ $ping_rate = '!100.0,20%!500.0,60%'
){
- $real_nagios_ping_rate = $nagios_ping_rate ? {
- '' => '!100.0,20%!500.0,60%',
- default => $nagios_ping_rate
- }
-
- nagios::service{ "check_ping":
- ensure => $ensure,
- check_command => "check_ping${real_nagios_ping_rate}",
- }
+ nagios::service{ "check_ping":
+ ensure => $ensure,
+ check_command => "check_ping${ping_rate}",
+ }
}
diff --git a/manifests/target.pp b/manifests/target.pp
index 675ac1a..f9b7e13 100644
--- a/manifests/target.pp
+++ b/manifests/target.pp
@@ -1,15 +1,22 @@
# manifests/target.pp
-class nagios::target {
+class nagios::target(
+ $parents = 'absent',
+ $address = $::ipaddress,
+ $nagios_alias = $::hostname,
+ $hostgroups = 'absent'
+){
+ @@nagios_host { $::fqdn:
+ address => $address,
+ alias => $nagios_alias,
+ use => 'generic-host',
+ }
- @@nagios_host { "${fqdn}":
- address => $ipaddress,
- alias => $hostname,
- use => 'generic-host',
- }
-
- if ($nagios_parents != '') {
- Nagios_host["${fqdn}"] { parents => $nagios_parents }
- }
+ if ($parents != 'absent') {
+ Nagios_host["${::fqdn}"] { parents => $parents }
+ }
+ if ($hostgroups != 'absent') {
+ Nagios_host["${::fqdn}"] { hostgroups => $hostgroups }
+ }
}
diff --git a/manifests/target/fqdn.pp b/manifests/target/fqdn.pp
index acac5d6..6bb16c1 100644
--- a/manifests/target/fqdn.pp
+++ b/manifests/target/fqdn.pp
@@ -1,5 +1,10 @@
-class nagios::target::fqdn inherits nagios::target {
-
- Nagios_host["${fqdn}"] { address => "${fqdn}" }
-
+class nagios::target::fqdn(
+ $hostgroups = 'absent',
+ $parents = 'absent'
+) {
+ class{'nagios::target':
+ address => $::fqdn,
+ hostgroups => $hostgroups,
+ parents => $parents
+ }
}