set correct labels for munin plugins
[puppet_munin.git] / manifests / plugin.pp
1 # plugin.pp - configure a specific munin plugin
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 define munin::plugin (
7     $ensure = "present",
8     $script_path_in = '',
9     $config = '')
10 {
11     include munin::plugin::scriptpaths
12     $real_script_path = $script_path_in ? { '' => $munin::plugin::scriptpaths::script_path, default => $script_path_in }
13
14     $plugin_src = $ensure ? { "present" => $name, default => $ensure }
15     $plugin = "/etc/munin/plugins/$name"
16     $plugin_conf = "/etc/munin/plugin-conf.d/$name.conf"
17
18     include munin::plugins::setup
19     case $ensure {
20         "absent": {
21             file { $plugin: ensure => absent, }
22         }
23         default: {
24             case $::kernel {
25                 openbsd: { $basic_require = File['/var/run/munin'] }
26                 default: { $basic_require = Package['munin-node'] }
27             }
28             if $require {
29                 $real_require = [ $require, $basic_require ]
30             } else {
31                 $real_require = $basic_require
32             }
33             file { $plugin:
34                 ensure => "${real_script_path}/${plugin_src}",
35                 require => $real_require,
36                 notify => Service['munin-node'];
37             }
38             if $::selinux == 'true' {
39               File[$plugin]{
40                 seltype => 'munin_etc_t',
41               }
42             }
43         }
44     }
45     case $config {
46         '': {
47             file { $plugin_conf: ensure => absent }
48         }
49         default: {
50             case $ensure {
51                 absent: {
52                     file { $plugin_conf: ensure => absent }
53                 }
54                 default: {
55                     file { $plugin_conf:
56                         content => "[${name}]\n$config\n",
57                         mode => 0644, owner => root, group => 0,
58                     }
59                     if $require {
60                         File[$plugin_conf]{
61                             require +> $require,
62                         }
63                     }
64                 }
65             }
66         }
67     }
68 }