265 lines
6.5 KiB
Puppet
265 lines
6.5 KiB
Puppet
|
|
# Install and configure munin node.
|
|
#
|
|
class munin::node {
|
|
|
|
package { "munin-node":
|
|
ensure => installed,
|
|
}
|
|
|
|
service { "munin-node":
|
|
ensure => running,
|
|
enable => true,
|
|
require => Package["munin-node"],
|
|
start => $operatingsystem ? {
|
|
OpenBSD => "/usr/bin/install -d -o _munin /var/run/munin; /usr/local/sbin/munin-node",
|
|
default => undef,
|
|
},
|
|
stop => $operatingsystem ? {
|
|
OpenBSD => "/usr/bin/pkill -f /usr/local/sbin/munin-node",
|
|
default => undef,
|
|
},
|
|
}
|
|
|
|
file { "/etc/munin/munin-node.conf":
|
|
ensure => present,
|
|
content => template("munin/munin-node.conf.erb"),
|
|
owner => root,
|
|
group => $operatingsystem ? {
|
|
OpenBSD => wheel,
|
|
default => root,
|
|
},
|
|
mode => 0644,
|
|
require => Package["munin-node"],
|
|
notify => Exec["munin-node-configure"],
|
|
}
|
|
|
|
@@file { "/etc/munin/nodes.d/${homename}.conf":
|
|
content => "[${homename}]\n address ${ipaddress}\n use_node_name yes\n",
|
|
ensure => present,
|
|
tag => "munin",
|
|
notify => Exec["generate-munin-conf"],
|
|
}
|
|
|
|
exec { "munin-node-configure":
|
|
command => "munin-node-configure --shell 2>/dev/null | /bin/sh",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin",
|
|
user => root,
|
|
refreshonly => true,
|
|
notify => Service["munin-node"],
|
|
}
|
|
|
|
munin::plugin { "vmware_vms": config => "vmware" }
|
|
|
|
}
|
|
|
|
|
|
# Configure SNMP node.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $name:
|
|
# Target SNMP host.
|
|
# $snmp_community:
|
|
# SNMP community. Defaults to public.
|
|
# $snmp_version:
|
|
# SNMP version. Defaults to 2.
|
|
#
|
|
# === Sample usage
|
|
#
|
|
# munin::snmpnode { "sw1.example.com":
|
|
# $snmp_community => "mycommunity",
|
|
# }
|
|
#
|
|
define munin::snmpnode($snmp_community="public", $snmp_version="2") {
|
|
|
|
file { "/etc/munin/plugin-conf.d/snmp_${name}":
|
|
content => "[snmp_${name}_*]\nenv.community ${snmp_community}\nenv.version ${snmp_version}\n",
|
|
ensure => present,
|
|
owner => root,
|
|
group => $operatingsystem ? {
|
|
OpenBSD => wheel,
|
|
default => root,
|
|
},
|
|
mode => 0600,
|
|
notify => Service["munin-node"],
|
|
}
|
|
|
|
@@file { "/etc/munin/nodes.d/${name}.conf":
|
|
content => "[${name}]\n address ${ipaddress}\n use_node_name no\n",
|
|
ensure => present,
|
|
tag => "munin",
|
|
notify => Exec["generate-munin-conf"],
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Add new custom munin plugin.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# $name:
|
|
# Plugin name to install.
|
|
# $config:
|
|
# Configuration file name associated with plugin. Defaults to none.
|
|
#
|
|
# === Sample usage
|
|
#
|
|
# munin::plugin { "vmware_vms":
|
|
# config => "vmware",
|
|
# }
|
|
#
|
|
define munin::plugin($config = "") {
|
|
|
|
case $operatingsystem {
|
|
OpenBSD: {
|
|
file { "/usr/local/libexec/munin/plugins/${name}":
|
|
ensure => present,
|
|
source => "puppet:///munin/plugins/${name}",
|
|
owner => root,
|
|
group => wheel,
|
|
mode => 0755,
|
|
require => Package["munin-node"],
|
|
}
|
|
}
|
|
default: {
|
|
file { "/usr/share/munin/plugins/${name}":
|
|
ensure => present,
|
|
source => "puppet:///munin/plugins/${name}",
|
|
owner => root,
|
|
group => root,
|
|
mode => 0755,
|
|
require => Package["munin-node"],
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($config) {
|
|
file { "/etc/munin/plugin-conf.d/${config}":
|
|
ensure => present,
|
|
source => [ "puppet:///files/munin/plugin-conf/${config}.${fqdn}",
|
|
"puppet:///files/munin/plugin-conf/${config}",
|
|
"puppet:///munin/plugin-conf/${config}", ],
|
|
owner => root,
|
|
group => $operatingsystem ? {
|
|
OpenBSD => wheel,
|
|
default => root,
|
|
},
|
|
mode => 0644,
|
|
notify => Service["munin-node"],
|
|
require => $operatingsystem ? {
|
|
OpenBSD => File["/usr/local/libexec/munin/plugins/${name}"],
|
|
default => File["/usr/share/munin/plugins/${name}"],
|
|
},
|
|
}
|
|
}
|
|
|
|
case $operatingsystem {
|
|
OpenBSD: {
|
|
exec { "munin-enable-${name}":
|
|
command => "ln -s /usr/local/libexec/munin/plugins/${name} /etc/munin/plugins/${name}",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
user => root,
|
|
onlyif => [ "test ! -h /etc/munin/plugins/${name}",
|
|
"/usr/local/libexec/munin/plugins/${name} autoconf", ],
|
|
notify => Service["munin-node"],
|
|
require => File["/usr/local/libexec/munin/plugins/${name}"],
|
|
}
|
|
}
|
|
default: {
|
|
exec { "munin-enable-${name}":
|
|
command => "ln -s /usr/share/munin/plugins/${name} /etc/munin/plugins/${name}",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
user => root,
|
|
onlyif => [ "test ! -h /etc/munin/plugins/${name}",
|
|
"/usr/share/munin/plugins/${name} autoconf", ],
|
|
notify => Service["munin-node"],
|
|
require => File["/usr/share/munin/plugins/${name}"],
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
# Install and configure munin server.
|
|
#
|
|
# === Requires
|
|
#
|
|
# * Storedconfigs
|
|
#
|
|
class munin::server {
|
|
|
|
package { "munin":
|
|
ensure => installed,
|
|
}
|
|
|
|
if $munin_datadir {
|
|
file { "${munin_datadir}":
|
|
ensure => directory,
|
|
mode => 0755,
|
|
owner => munin,
|
|
group => munin,
|
|
require => Package["munin"],
|
|
}
|
|
|
|
file { "/var/lib/munin":
|
|
ensure => "${munin_datadir}",
|
|
force => true,
|
|
backup => ".orig",
|
|
require => File["${munin_datadir}"],
|
|
}
|
|
}
|
|
|
|
if $munin_htmldir {
|
|
file { "${munin_htmldir}":
|
|
ensure => directory,
|
|
mode => 0755,
|
|
owner => munin,
|
|
group => munin,
|
|
require => Package["munin"],
|
|
}
|
|
|
|
file { "/var/www/html/munin":
|
|
ensure => "${munin_htmldir}",
|
|
force => true,
|
|
backup => ".orig",
|
|
require => File["${munin_htmldir}"],
|
|
}
|
|
}
|
|
|
|
file { "/etc/munin/nodes.d":
|
|
ensure => directory,
|
|
purge => true,
|
|
force => true,
|
|
recurse => true,
|
|
owner => root,
|
|
group => root,
|
|
mode => 0644,
|
|
source => "puppet:///custom/empty",
|
|
require => Package["munin"],
|
|
}
|
|
|
|
file { "/etc/munin/munin.conf.in":
|
|
ensure => present,
|
|
source => [ "puppet:///files/munin/munin.conf.in",
|
|
"puppet:///munin/munin.conf.in", ],
|
|
owner => root,
|
|
group => root,
|
|
mode => 0644,
|
|
require => Package["munin"],
|
|
notify => Exec["generate-munin-conf"],
|
|
}
|
|
|
|
exec { "generate-munin-conf":
|
|
command => "cat /etc/munin/munin.conf.in /etc/munin/nodes.d/*.conf > /etc/munin/munin.conf",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
user => root,
|
|
refreshonly => true,
|
|
require => File["/etc/munin/munin.conf.in"],
|
|
}
|
|
|
|
File <<| tag == "munin" |>>
|
|
|
|
}
|