f2046fb13d76245111385e935c85d004fa7c4306
[puppet_munin.git] / manifests / client.pp
1 # client.pp - configure a munin node
2 # Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
3 # See LICENSE for the full license granted to you.
4 # Adapted and improved by admin(at)immerda.ch
5
6 class munin::client {
7
8         $munin_port_real = $munin_port ? { '' => 4949, default => $munin_port } 
9         $munin_host_real = $munin_host ? {
10                 '' => '*',
11                 'fqdn' => '*',
12                 default => $munin_host
13         }
14
15     case $operatingsystem {
16         darwin: { include munin::client::darwin }
17         debian: { include munin::client::debian }
18         ubuntu: { include munin::client::ubuntu }
19         centos: { include munin::client::centos }
20         gentoo: { include munin::client::gentoo }
21         default: { include munin::client::base }
22     }
23 }
24
25 define munin::register()
26 {
27         $munin_port_real = $munin_port ? { '' => 4949, default => $munin_port } 
28         $munin_host_real = $munin_host ? {
29                 '' => $fqdn,
30                 'fqdn' => $fqdn,
31                 default => $munin_host
32         }
33
34         @@file { "${NODESDIR}/${name}_${munin_port_real}":
35                 ensure => present,
36                 content => template("munin/defaultclient.erb"),
37                 tag => 'munin',
38         }
39 }
40
41 # snmp_testplugin: the plugin we use to test if it's set
42 define munin::register_snmp(
43     $snmpd_testplugin = 'load'
44 )
45 {
46         $munin_port_real = $munin_port ? { '' => 4949, default => $munin_port } 
47         $munin_host_real = $munin_host ? {
48                 '' => '*',
49                 'fqdn' => '*',
50                 default => $munin_host
51     }
52     exec{"register_snmp_munin_for_${name}":
53         command => "munin-node-configure-snmp ${name} | sh",
54         unless => "test -e /etc/munin/plugins/snmp_${name}_${snmpd_testplugin}",
55     }
56     @@file { "munin_snmp_${name}": path => "${NODESDIR}/${name}",
57         ensure => present,
58         content => template("munin/snmpclient.erb"),
59         require => Exec["register_snmp_munin_for_${name}"],
60         tag => 'munin',
61     }
62 }
63
64 class munin::client::base {
65         package { "munin-node": ensure => installed }
66         service { "munin-node":
67                 ensure => running, 
68         enable => true,
69         hasstatus => true,
70         hasrestart => true,
71         require => Package[munin-node],
72         }
73         file {"/etc/munin/":
74                         ensure => directory,
75                         mode => 0755, owner => root, group => 0;
76     }
77     $real_munin_allow = $munin_allow ? {
78         '' => '127.0.0.1',
79         default => $munin_allow
80     }
81     file {"/etc/munin/munin-node.conf":
82                         content => template("munin/munin-node.conf.$operatingsystem"),
83                         # this has to be installed before the package, so the postinst can
84                         # boot the munin-node without failure!
85                         before => Package["munin-node"],
86             notify => Service['munin-node'],
87                         mode => 0644, owner => root, group => 0,
88         }
89         munin::register { $fqdn: }
90         include munin::plugins::base
91 }
92
93 class munin::client::darwin {
94         file { "/usr/share/snmp/snmpd.conf": 
95                 mode => 744,
96                 content => template("munin/darwin_snmpd.conf.erb"),
97                 group  => 0,
98                 owner  => root,
99         }
100         delete_matching_line{"startsnmpdno":
101                 file => "/etc/hostconfig",
102                 pattern => "SNMPSERVER=-NO-",
103         }
104         line { "startsnmpdyes":
105                 file => "/etc/hostconfig",
106                 line => "SNMPSERVER=-YES-",
107                 notify => Exec["/sbin/SystemStarter start SNMP"],
108         }
109         exec{"/sbin/SystemStarter start SNMP":
110                 noop => false,
111         } 
112         munin::register_snmp { $fqdn: }
113 }
114
115 class munin::client::debian inherits munin::client::base {
116     # the plugin will need that
117         package { "iproute": ensure => installed }
118
119         Service["munin-node"]{
120                 # sarge's munin-node init script has no status
121                 hasstatus => $lsbdistcodename ? { sarge => false, default => true }
122         }
123     File["/etc/munin/munin-node.conf"]{
124                         content => template("munin/munin-node.conf.$operatingsystem.$lsbdistcodename"),
125     }
126         # workaround bug in munin_node_configure
127         plugin { "postfix_mailvolume": ensure => absent }
128         include munin::plugins::debian
129 }
130
131 class munin::client::ubuntu inherits munin::client::debian {}
132
133 class munin::client::gentoo inherits munin::client::base {
134     Package['munin-node'] {
135         name => 'munin',
136         category => 'net-analyzer',
137     }
138     
139
140         include munin::plugins::gentoo
141 }
142
143 class munin::client::centos inherits munin::client::base {
144         include munin::plugins::centos
145 }