summaryrefslogtreecommitdiff
path: root/manifests/defines.pp
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/defines.pp')
-rw-r--r--manifests/defines.pp122
1 files changed, 122 insertions, 0 deletions
diff --git a/manifests/defines.pp b/manifests/defines.pp
new file mode 100644
index 0000000..a41dd86
--- /dev/null
+++ b/manifests/defines.pp
@@ -0,0 +1,122 @@
+# manifests/defines.pp
+
+define nagios::host(
+ $ip = $fqdn,
+ $nagios_alias = $hostname,
+ $check_command = 'check-host-alive',
+ $max_check_attempts = 4,
+ $notification_interval = 120,
+ $notification_period = '24x7',
+ $notification_options = 'd,r',
+ $use = 'generic-host',
+ $nagios_contact_groups_in = $nagios_contact_groups,
+ $parents = 'localhost' )
+{
+ $real_nagios_contact_groups = $nagios_contact_groups_in ? {
+ '' => 'admins',
+ default => $nagios_contact_groups_in
+ }
+ $real_nagios_parents = $parents ? {
+ '' => 'localhost',
+ default => $parents
+ }
+
+ @@nagios_host { $name:
+ ensure => present,
+ address => $ip,
+ alias => $nagios_alias,
+ check_command => $check_command,
+ max_check_attempts => $max_check_attempts,
+ notification_interval => $notification_interval,
+ notification_period => $notification_period,
+ notification_options => $notification_options,
+ parents => $real_nagios_parents,
+ contact_groups => $real_nagios_contact_groups,
+ use => $use,
+ notify => Service[nagios],
+ }
+}
+
+# this will define a host which isn't managed by puppet.
+# a ping serivce is automatically added
+define nagios::extra_host($ip, $nagios_alias, $use = 'generic-host', $parents = 'localhost' ) {
+ nagios::host{$name:
+ ip => $ip,
+ nagios_alias => $nagios_alias,
+ use => $use,
+ parents => $parents
+ }
+
+ nagios::service { "check_ping_${name}":
+ host_name => $name,
+ check_command => 'check_ping!100.0,20%!500.0,60%',
+ host_name => $name,
+ service_description => "check_ping_${nagios_alias}",
+ }
+}
+
+# just a wrapper to make the notify more easy
+define nagios::command( $command_line ){
+ nagios_command{$name:
+ command_line => $command_line,
+ notify => Service[nagios],
+ }
+}
+
+define nagios::service(
+ $check_command,
+ $host_name = $fqdn,
+ $use = 'generic-service',
+ $notification_period = "24x7",
+ $max_check_attempts = 4,
+ $retry_check_interval = 1,
+ $notification_interval = 960,
+ $normal_check_interval = 5,
+ $check_period = "24x7",
+ $nagios_contact_groups_in = $nagios_contact_groups,
+ $service_description = ''){
+
+ # this ensures nagios internal check, that every
+ # service has it's host
+ # temporary disabled.
+ # include nagios::target::host
+
+ $real_nagios_contact_groups = $nagios_contact_groups_in ? {
+ '' => 'admins',
+ default => $nagios_contact_groups_in
+ }
+ @@nagios_service {$name:
+ check_command => $check_command,
+ use => $use,
+ host_name => $host_name,
+ notification_period => $notification_period,
+ max_check_attempts => $max_check_attempts,
+ retry_check_interval => $retry_check_interval,
+ notification_interval => $notification_interval,
+ normal_check_interval => $normal_check_interval,
+ contact_groups => $real_nagios_contact_groups,
+ check_period => $check_period,
+ notify => Service[nagios],
+ }
+ # if no service_description is set it is a namevar
+ case $service_description {
+ '': {}
+ default: {
+ Nagios_service[$name]{
+ service_description => $service_description,
+ }
+ }
+ }
+}
+
+define nagios::service::ping(){
+ $real_nagios_ping_rate = $nagios_ping_rate ? {
+ '' => '!100.0,20%!500.0,60%',
+ default => $nagios_ping_rate
+ }
+
+ nagios::service{ "check_ping_${hostname}":
+ check_command => "check_ping${real_nagios_ping_rate}",
+ }
+}
+