rendered paste bodyclass munin {
class default_client { munin::client { default_munin_node: } }
class default_vserver_client { munin::vserver_client { vserver_munin_node: } }
define client ($port = 4949, $bindhost = "fqdn")
{
munin::plugin {
apt: ensure => absent;
[ apt_all, df_abs ]: ;
}
munin::base { base:
port => $port,
bindhost => $bindhost,
}
}
define vserver_client ($port = 4949, $bindhost = "fqdn")
{
munin::plugin {
[ apt, cpu, df, df_abs, df_inode, entropy, forks, interrupts, iostat,
irqstats, load, memory, open_files, open_inodes, swap
]:
ensure => absent;
[ apt_all, netstat, processes]: ;
}
munin::base { base:
port => $port,
bindhost => $bindhost,
}
}
define base ($port = 4949, $bindhost = "fqdn")
{
package { "munin-node":
ensure => installed
}
replace { set_munin_node_port:
file => "/etc/munin/munin-node.conf",
pattern => "^port (?!$port)[0-9]*.*",
replacement => "port $port",
notify => Service[munin-node],
require => Package[munin-node],
}
$real_bindhost = $bindhost ? {
"fqdn" => $fqdn,
default => $bindhost
}
# debug("Using bindhost $real_bindhost for $fqdn")
#
# replace { set_munin_node_bindhost:
# file => "/etc/munin/munin-node.conf",
# pattern => "^host (?!$real_bindhost).*",
# replacement => "host $real_bindhost",
# notify => Service[munin-node],
# require => Package[munin-node],
# }
line { allow_munin_host:
file => "/etc/munin/munin-node.conf",
line => "allow ^$munin_host$",
ensure => present,
notify => Service[munin-node],
require => Package[munin-node],
}
line { set_fqdn:
file => "/etc/munin/munin-node.conf",
line => "host_name $fqdn",
ensure => present,
notify => Service[munin-node],
require => Package[munin-node],
}
@@file { "munin_def_${real_bindhost}_$port": path => "${NODESDIR}/$fqdn",
ensure => present,
content => "[$fqdn]\n\taddress $real_bindhost\n\tport $port\n\n",
}
file {
"/etc/munin/plugins":
checksum => mtime, ensure => directory,
require => Package[munin-node];
"/etc/munin/munin-node.conf":
checksum => md5,
require => Package[munin-node],
}
service { munin-node:
ensure => running,
subscribe => [ Package["munin-node"],
File["/etc/munin/plugins"],
File["/etc/munin/munin-node.conf"],
# Exec[exec_set_munin_node_bindhost],
Exec[exec_set_munin_node_port] ]
}
}
$NODESDIR="/var/local/puppet/munin-nodes"
class host {
package { [munin]:
ensure => installed
}
# Collect all the exported files from the nodes
File <<||>>
# monitor this file for updates
$munin_includes = "$splice_dir/munin_conf_includes"
file { $munin_includes: checksum => md5, }
exec { create_munin_includes:
command => "/bin/sh -c '/bin/cat $NODESDIR/* > $munin_includes'",
subscribe => File[$NODESDIR],
}
# create munin.conf
file_splice { munin_conf_includes:
file => "/etc/munin/munin.conf",
input_file => "$splice_dir/munin_conf_includes",
require => Exec[create_munin_includes],
subscribe => File[$munin_includes],
}
}
define plugin ($ensure = "present", $script_path = "/usr/share/munin/plugins") {
debug ( "munin_plugin: name=$name, ensure=$ensure, script_path=$script_path" )
$plugin = "/etc/munin/plugins/$name"
case $ensure {
"absent": {
debug ( "munin_plugin: suppressing $plugin" )
file { $plugin: ensure => absent, }
}
"present": {
debug ( "munin_plugin: making $plugin using default $name" )
file { $plugin:
ensure => "$script_path/$name",
require => Package[munin-node],
notify => Service[munin-node],
}
}
default: {
debug ( "munin_plugin: making $plugin using $ensure" )
file { $plugin:
ensure => "$script_path/$ensure",
require => Package[munin-node],
notify => Service[munin-node],
}
}
}
}
}