summaryrefslogtreecommitdiff
path: root/manifests/defines.pp
blob: a41dd8640e283d41d122c619105f8bf5b384d9c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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}",
    }
}