diff options
-rw-r--r-- | manifests/client.pp | 25 | ||||
-rw-r--r-- | manifests/plugin.pp | 2 | ||||
-rw-r--r-- | templates/munin-node.conf.default | 13 | ||||
-rw-r--r-- | templates/snmpclient.erb | 10 |
4 files changed, 40 insertions, 10 deletions
diff --git a/manifests/client.pp b/manifests/client.pp index c59369b..48d2a22 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -38,13 +38,26 @@ define munin::register() } } -define munin::register_snmp() +# snmp_testplugin: the plugin we use to test if it's set +define munin::register_snmp( + $snmpd_testplugin = 'load' +) { - @@file { "munin_snmp_${name}": path => "${NODESDIR}/${name}", - ensure => present, - content => template("munin/snmpclient.erb"), - tag => 'munin', - } + $munin_port_real = $munin_port ? { '' => 4949, default => $munin_port } + $munin_host_real = $munin_host ? { + '' => '*', + 'fqdn' => '*', + default => $munin_host + } + exec{"register_snmp_munin_for_${name}": + command => "munin-node-configure-snmp ${name} | sh", + unless => "test -e /etc/munin/plugins/snmp_${name}_${snmpd_testplugin}", + } + @@file { "munin_snmp_${name}": path => "${NODESDIR}/${name}", + ensure => present, + content => template("munin/snmpclient.erb"), + tag => 'munin', + } } class munin::client::base { diff --git a/manifests/plugin.pp b/manifests/plugin.pp index c8d0bc3..6dfe5f0 100644 --- a/manifests/plugin.pp +++ b/manifests/plugin.pp @@ -138,7 +138,7 @@ class munin::plugins::base { file { [ '/etc/munin/plugins', '/etc/munin/plugin-conf.d' ]: source => "puppet://$server/common/empty", - ignore => '\.ignore', + ignore => [ '\.ignore', 'snmp_*' ], ensure => directory, checksum => mtime, recurse => true, purge => true, force => true, mode => 0755, owner => root, group => 0, diff --git a/templates/munin-node.conf.default b/templates/munin-node.conf.default index c848f3d..befcae4 100644 --- a/templates/munin-node.conf.default +++ b/templates/munin-node.conf.default @@ -5,12 +5,10 @@ log_level 4 log_file /var/log/munin/munin-node.log pid_file /var/run/munin/munin-node.pid + background 1 setseid 1 -# Which host/port to bind to; -host <%= munin_host_real %> -port <%= munin_port_real %> user root group 0 setsid yes @@ -34,6 +32,15 @@ host_name <%= fqdn %> # regular expression, due to brain damage in Net::Server, which # doesn't understand CIDR-style network notation. You may repeat # the allow line as many times as you'd like + <% real_munin_allow.split(':').each do |val| -%> allow <%= '^'+val.gsub(/\./, '\.')+'$' %> <% end -%> + +# Which address to bind to; +host <%= munin_host_real %> +# host 127.0.0.1 + +# And which port +port <%= munin_port_real %> + diff --git a/templates/snmpclient.erb b/templates/snmpclient.erb new file mode 100644 index 0000000..44ecc6d --- /dev/null +++ b/templates/snmpclient.erb @@ -0,0 +1,10 @@ +<% + # Downcase all information + dom = domain.downcase + host = hostname.downcase + fhost = name.downcase +%> +### This syntax can be extended, it might get better ... +#<%= dom %> snmp -> <%= fhost %> +[<%= fhost %>] # snmp box + address <%= munin_host_real %> |