From a4e9e691b4dbccb9d8e5d82b941b6ebad09d391e Mon Sep 17 00:00:00 2001 From: Udo Waechter Date: Mon, 26 May 2014 13:03:17 +0200 Subject: [PATCH] refactoring, part 1 --- manifests/client.pp | 21 +++++++++++++++++++ manifests/defines/fact_d.pp | 4 ++-- manifests/{common.pp => facter.pp} | 4 ++-- manifests/init.pp | 21 +++++-------------- manifests/monitored/client.pp | 20 ++++++++++++++++++ manifests/puppet-dashboard.pp | 2 +- manifests/puppetmaster.pp | 32 +++++++++-------------------- templates/puppet.conf.erb | 33 ++++++++++++++++-------------- 8 files changed, 79 insertions(+), 58 deletions(-) create mode 100644 manifests/client.pp rename manifests/{common.pp => facter.pp} (90%) create mode 100644 manifests/monitored/client.pp diff --git a/manifests/client.pp b/manifests/client.pp new file mode 100644 index 0000000..a6272bb --- /dev/null +++ b/manifests/client.pp @@ -0,0 +1,21 @@ +class puppet::client ( + $ensure = 'present', + $version = $::PUPPET_VERSION) { + class { 'puppet': + daemonize => false, + require => Exec['apt_update'], + } + + if !defined(Class['puppet::puppetlabs_apt']) { + class { 'puppet::puppetlabs_apt': } + require 'puppet::puppetlabs_apt' + } + + apt::pin { 'puppet': + version => $version, + packages => 'puppet*', + priority => '100', + } + +} + diff --git a/manifests/defines/fact_d.pp b/manifests/defines/fact_d.pp index e442aa4..72ce439 100644 --- a/manifests/defines/fact_d.pp +++ b/manifests/defines/fact_d.pp @@ -1,11 +1,11 @@ define puppet::defines::fact_d ($value, $ensure = 'present', $key = false) { - require 'puppet::common' + require 'puppet::facter' $k_real = $key ? { false => $name, default => $key, } - file { "${puppet::common::facts_d}/${k_real}.txt": + file { "${puppet::facter::facts_d}/${k_real}.txt": ensure => $ensure, content => "${k_real}=${value}", } diff --git a/manifests/common.pp b/manifests/facter.pp similarity index 90% rename from manifests/common.pp rename to manifests/facter.pp index 3b1b0bb..1492e66 100644 --- a/manifests/common.pp +++ b/manifests/facter.pp @@ -1,11 +1,11 @@ -class puppet::common ( +class puppet::facter ( $ensure = 'present') { $pkg_ens = $ensure ? { 'present' => 'latest', default => $ensure, } - package { 'facter': ensure => '1.7.5-1puppetlabs1' } + package { 'facter': ensure => $ensure } package { 'libaugeas-ruby': } $ens_dir = $ensure ? { diff --git a/manifests/init.pp b/manifests/init.pp index 68798ac..9fceca5 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,4 +1,4 @@ -import 'defines/*.pp' +#import 'defines/*.pp' class puppet ( $ensure = 'present', @@ -16,7 +16,7 @@ class puppet ( } $factpath = '/var/lib/puppet/lib/facter' - require 'puppet::common' + require 'puppet::facter' if !defined(Class['puppet::puppetlabs_apt']) { require 'puppet::puppetlabs_apt' @@ -111,31 +111,20 @@ class puppet ( }, } } - - if defined(Class['ganglia::monitor']) { - Ganglia::Gmetric::Cron { - source => 'puppet/ganglia', - ensure => $ensure, - } - - ganglia::gmetric::cron { 'puppetd_lastrun.sh': runwhen => '5'; 'puppetd_runtime.sh': runwhen => '15'; } - - } } } - $puppet_user = $operatingsystem ? { + $puppet_user = $::operatingsystem ? { 'Darwin' => $adm, default => 'puppet', } - $puppet_group = $operatingsystem ? { + $puppet_group = $::operatingsystem ? { 'Darwin' => 'wheel', default => 'puppet', } # 'FreeBSD' => '/usr/local/etc/puppet/puppet.conf', - $puppetconf = $operatingsystem ? { + $puppetconf = $::operatingsystem ? { default => '/etc/puppet/puppet.conf', } - file { $puppetconf: ensure => $ensure, content => template('puppet/puppet.conf.erb'), diff --git a/manifests/monitored/client.pp b/manifests/monitored/client.pp new file mode 100644 index 0000000..661fd34 --- /dev/null +++ b/manifests/monitored/client.pp @@ -0,0 +1,20 @@ +class puppet::monitored::client ( + $ensure = 'present') { + $check = '/usr/lib/nagios/plugins/check_file_age -w10800 -c36000 -f/var/lib/puppet/state/last_run_summary.yaml' + + icinga::object::hostgroupmember { 'puppet-clients': ensure => 'absent', } + + sudo::conf { 'puppet-clients-icinga-sudo': + content => "nagios ALL=NOPASSWD: ${check}", + ensure => $ensure, + } + + massive_passive::icinga::service { 'Puppet last run': + freshness_threshold => '5800', + command => "/usr/bin/sudo ${check}", + use => 'workhours-passive-service', + hostgroup_name => 'linux-servers', + notifications_enabled => 1, + ensure => $ensure, + } +} \ No newline at end of file diff --git a/manifests/puppet-dashboard.pp b/manifests/puppet-dashboard.pp index f0529f0..cc76d22 100644 --- a/manifests/puppet-dashboard.pp +++ b/manifests/puppet-dashboard.pp @@ -1,5 +1,5 @@ class puppet::puppet-dashboard ($ensure = 'present') { - require 'puppet::common' + require 'puppet::facter' package { ['libjson-ruby', 'puppet-dashboard']: ensure => $ensure, diff --git a/manifests/puppetmaster.pp b/manifests/puppetmaster.pp index 48b8bcc..9bb8423 100644 --- a/manifests/puppetmaster.pp +++ b/manifests/puppetmaster.pp @@ -1,29 +1,17 @@ -class puppet::puppetmaster ($ensure = 'present', $puppetqd = false) { - require 'puppet::common' - +class puppet::puppetmaster ( + $ensure = 'present', + $dns_alt_names = undef, + $storeconfigs = false, + $storeconfigs_backend = undef, + $reports = undef, + $modulepath = undef) { + require 'puppet::facter' + if !defined(Class['puppet::puppetlabs_apt']) { class { 'puppet::puppetlabs_apt': } require 'puppet::puppetlabs_apt' } - if $puppetqd { - class { 'activemq': ensure => $ensure } - - package { 'libnet-arp-perl': ensure => $ensure } - - service { 'stompserver': - ensure => false, - enable => false, - before => Class['activemq'], - } - - service { 'puppetqd': - ensure => running, - pattern => 'puppet queue queue', - enable => true, - } - } - if defined(Class['ganglia::monitor']) { Ganglia::Gmetric::Cron { source => 'puppet/ganglia', @@ -41,7 +29,7 @@ class puppet::puppetmaster ($ensure = 'present', $puppetqd = false) { # ## remove disk reports from time to time tidy { "${::puppet_vardir}/reports": - age => '1d', + age => '1m', recurse => true, backup => false, } diff --git a/templates/puppet.conf.erb b/templates/puppet.conf.erb index 6af96df..769ddd9 100644 --- a/templates/puppet.conf.erb +++ b/templates/puppet.conf.erb @@ -10,30 +10,33 @@ rundir=/var/run/puppet factsignore = .svn CVS .git pluginsync=true factpath=$vardir/lib/facter -templatedir=/etc/puppet/templates -## should we use this? -#prerun_command=/etc/puppet/etckeeper-commit-pre -#postrun_command=/etc/puppet/etckeeper-commit-post - <% if (fqdn == scope.lookupvar("puppetmaster_server")) || (fqdn == scope.lookupvar("puppetmasterdev_server")) -%> -dbmigrate=true -dbadapter=<%= scope.lookupvar('puppetmaster_dbtype') %> -dbname=<%= scope.lookupvar('puppetmaster_dbname') %> -dbserver=<%= scope.lookupvar('puppetmaster_dbhost') %> -dbuser=<%= scope.lookupvar('puppetmaster_dbuser') %> -dbpassword=<%= scope.lookupvar('puppetmaster_dbpassword') %> +#dbmigrate=true +#dbadapter=<%= scope.lookupvar('puppetmaster_dbtype') %> +#dbname=<%= scope.lookupvar('puppetmaster_dbname') %> +#dbserver=<%= scope.lookupvar('puppetmaster_dbhost') %> +#dbuser=<%= scope.lookupvar('puppetmaster_dbuser') %> +#dbpassword=<%= scope.lookupvar('puppetmaster_dbpassword') %> [master] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY -reports=<%= scope.lookupvar('puppetmaster_reports') %> +<% if scope.lookupvar('puppet::puppetmaster::dns_alt_names') -%> +dns_alt_names=<%= scope.lookupvar('puppet::puppetmaster::dns_alt_names') %> +<% end -%> +<% if @reports -%> +reports=<%= @reports %> +<% end -%> <% if scope.lookupvar('puppetmaster_reporturl') != false -%> reporturl=<%= scope.lookupvar('puppetmaster_reporturl') %> <% end -%> -modulepath=<%= scope.lookupvar('puppetmaster_modulepath') %> -storeconfigs=true -rails_loglevel=info +modulepath=<%= scope['puppet::puppetmaster::modulepath'] %> +storeconfigs=<%= scope['puppet::puppetmaster::storeconfigs'] %> +<% if scope['puppet::puppetmaster::storeconfigs_backend'] -%> +storeconfigs_backend=<%= scope['puppet::puppetmaster::storeconfigs_backend'] %> +<% end -%> +#rails_loglevel=info <% end -%> [agent]