From acfaa47dbdb07805cb07eb72f552d0e9b03ba1c9 Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Sat, 13 Dec 2014 11:21:09 -0500 Subject: create a single entry point to the module The current state of the module makes it impossible to install a munin server with munin::host, since it depends on resources in munin::client (because of the plugins it installs). Even if we include the munin::client class "just before" munin::host, puppet thinks there are dependency issues. By moving arguments to a single point of entry we can then include all necessary items and puppet will find the needed resources correctly. --- manifests/client.pp | 21 +++++---------------- manifests/client/base.pp | 14 +++++++------- manifests/host.pp | 13 +++++-------- manifests/init.pp | 38 ++++++++++++++++++++++++++++++++++++-- 4 files changed, 53 insertions(+), 33 deletions(-) (limited to 'manifests') diff --git a/manifests/client.pp b/manifests/client.pp index 724ff05..aca899a 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -3,18 +3,7 @@ # Adapted and improved by admin(at)immerda.ch # configure a munin node -class munin::client( - $allow = [ '127.0.0.1' ], - $host = '*', - $host_name = $::fqdn, - $port = '4949', - $use_ssh = false, - $manage_shorewall = false, - $shorewall_collector_source = 'net', - $export_tag = 'munin', - $description = 'absent', - $munin_group = 'absent', -) { +class munin::client { case $::operatingsystem { openbsd: { include munin::client::openbsd } @@ -24,11 +13,11 @@ class munin::client( centos: { include munin::client::base } default: { include munin::client::base } } - if $munin::client::manage_shorewall { + if $munin::manage_shorewall { class{'shorewall::rules::munin': - munin_port => $port, - munin_collector => delete($allow,'127.0.0.1'), - collector_source => $shorewall_collector_source, + munin_port => $munin::port, + munin_collector => delete($munin::allow,'127.0.0.1'), + collector_source => $munin::shorewall_collector_source, } } } diff --git a/manifests/client/base.pp b/manifests/client/base.pp index 6ed0f71..8ee8b95 100644 --- a/manifests/client/base.pp +++ b/manifests/client/base.pp @@ -26,19 +26,19 @@ class munin::client::base inherits munin::client::params { owner => root, group => 0, } - $host = $munin::client::host ? { + $host = $munin::host ? { '*' => $::fqdn, - default => $munin::client::host + default => $munin::host } munin::register { $::fqdn: host => $host, - port => $munin::client::port, - use_ssh => $munin::client::use_ssh, - description => $munin::client::description, - group => $munin::client::munin_group, + port => $munin::port, + use_ssh => $munin::use_ssh, + description => $munin::description, + group => $munin::munin_group, config => [ 'use_node_name yes', 'load.load.warning 5', 'load.load.critical 10'], - export_tag => $munin::client::export_tag, + export_tag => $munin::export_tag, } include munin::plugins::base } diff --git a/manifests/host.pp b/manifests/host.pp index 0e5fb01..9831052 100644 --- a/manifests/host.pp +++ b/manifests/host.pp @@ -2,11 +2,8 @@ # Copyright (C) 2007 David Schmitt # See LICENSE for the full license granted to you. -class munin::host( - $cgi_graphing = false, - $cgi_owner = 'os_default', - $export_tag = 'munin' -) { +class munin::host { + package {'munin': ensure => installed, } Concat::Fragment <<| tag == $export_tag |>> @@ -31,9 +28,9 @@ class munin::host( include munin::plugins::muninhost - if $munin::host::cgi_graphing { + if $munin::cgi_graphing { class {'munin::host::cgi': - owner => $cgi_owner, + owner => $munin::cgi_owner, } } @@ -44,7 +41,7 @@ class munin::host( user => 'root', } - if $munin::host::manage_shorewall { + if $munin::manage_shorewall { include shorewall::rules::out::munin } } diff --git a/manifests/init.pp b/manifests/init.pp index 54b489b..bbabf2e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -12,5 +12,39 @@ # General Public License version 3 as published by # the Free Software Foundation. # -# the port is a parameter so vservers can share -# IP addresses and still be happy +# Parameters: +# $is_server - determines whether or not to install munin server. munin-node is +# required for the server so it is always installed. +# $export_tag - tag exported resources so that only the server targeted by that +# tag will collect them. This can let you install multiple munin +# servers. +# +# Client-specific parameters: +# $allow, $host, $host_name, $port, $use_ssh, $manage_shorewall, +# $shorewall_collector_source, $description, $munin_group +# +# Server-specific parameters: +# $cgi_graphing, cgi_owner + +class munin ( + $is_server = false, + $export_tag = 'munin', + $allow = [ '127.0.0.1' ], + $host = '*', + $host_name = $::fqdn, + $port = '4949', + $use_ssh = false, + $manage_shorewall = false, + $shorewall_collector_source = 'net', + $description = 'absent', + $munin_group = 'absent', + $cgi_graphing = false, + $cgi_owner = 'os_default', +) { + + include munin::client + + if $is_server { + include munin::host + } +} -- cgit v1.2.3