summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manifests/client.pp25
-rw-r--r--manifests/plugin.pp2
-rw-r--r--templates/munin-node.conf.default13
-rw-r--r--templates/snmpclient.erb10
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 %>