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 6b19372..b297a37 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'), @@ -144,4 +133,4 @@ class puppet ( # require => [ Package["puppet"] ], } - } +} 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 da6dc0d..9bb8423 100644 --- a/manifests/puppetmaster.pp +++ b/manifests/puppetmaster.pp @@ -1,49 +1,35 @@ class puppet::puppetmaster ( - $ensure = 'present', - $puppetqd = false) { - require 'puppet::common' - + $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'], + if defined(Class['ganglia::monitor']) { + Ganglia::Gmetric::Cron { + source => 'puppet/ganglia', + ensure => $ensure, } - service { 'puppetqd': - ensure => running, - pattern => 'puppet queue queue', - enable => true, + ganglia::gmetric::cron { + 'puppetmaster.rb': + runwhen => '5'; + + 'puppetmaster_compiletime.rb': + runwhen => '60', } } - # if defined(Class['ganglia::monitor']) { - # Ganglia::Gmetric::Cron { - # source => 'puppet/ganglia', - # ensure => $ensure, - # } - # - # ganglia::gmetric::cron { - # 'puppetmaster.rb': - # runwhen => '5'; - # - # 'puppetmaster_compiletime.rb': - # runwhen => '60', - # } - # } - # ## 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]