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