diff options
-rw-r--r-- | files/client/puppet.conf.FreeBSD | 26 | ||||
-rw-r--r-- | files/master/lastruncheck | 6 | ||||
-rw-r--r-- | files/master/puppet.conf | 2 | ||||
-rw-r--r-- | manifests/cron.pp | 1 | ||||
-rw-r--r-- | manifests/cron/base.pp | 46 | ||||
-rw-r--r-- | manifests/cron/freebsd.pp | 23 | ||||
-rw-r--r-- | manifests/cron/linux.pp | 1 | ||||
-rw-r--r-- | manifests/freebsd.pp | 27 | ||||
-rw-r--r-- | manifests/init.pp | 12 | ||||
-rw-r--r-- | manifests/linux.pp | 1 | ||||
-rw-r--r-- | manifests/puppetmaster/base.pp | 11 | ||||
-rw-r--r-- | manifests/puppetmaster/debian.pp | 9 | ||||
-rw-r--r-- | manifests/puppetmaster/linux.pp | 6 | ||||
-rw-r--r-- | manifests/puppetmaster/package/base.pp | 6 | ||||
-rw-r--r-- | manifests/puppetmaster/package/debian.pp | 33 |
15 files changed, 166 insertions, 44 deletions
diff --git a/files/client/puppet.conf.FreeBSD b/files/client/puppet.conf.FreeBSD new file mode 100644 index 0000000..71bcf77 --- /dev/null +++ b/files/client/puppet.conf.FreeBSD @@ -0,0 +1,26 @@ +[main] + logdir=/var/log/puppet + vardir=/var/puppet + rundir=/var/run/puppet + + ssldir=/var/puppet/ssl + + # Where 3rd party plugins and modules are installed + libdir = $vardir/lib + + templatedir=$vardir/templates + + # Turn plug-in synchronization on. + pluginsync = true + pluginsource = puppet://$server/plugins + factpath = $vardir/lib/facter + +[puppetd] + report=true + server=server.example.com + + # different run-interval, default= 30min + # e.g. run puppetd every 4 hours = 14400 + # runinterval = 14400 + + logdest=$logdir/puppet.log diff --git a/files/master/lastruncheck b/files/master/lastruncheck index 149c655..d59e489 100644 --- a/files/master/lastruncheck +++ b/files/master/lastruncheck @@ -23,8 +23,8 @@ module Puppet::Lastcheck def facts_hosts return @facts_hosts if @facts_hosts require 'puppet/indirector/facts/yaml' - @facts_hosts = Puppet::Node::Facts.search("*").collect do |fqdn| - if node = Puppet::Node::Facts.find(fqdn) + @facts_hosts = Puppet::Node::Facts.indirection.search("*").collect do |fqdn| + if node = Puppet::Node::Facts.indirection.find(fqdn) { :hostname => node.name, :expired => node.expired?, :timestamp => node.values[:_timestamp], :expiration => node.expiration } end end.compact @@ -190,7 +190,7 @@ class Puppet::Application::Lastcheck < Puppet::Application exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs? #Puppet::Util::Log.newdestination :console - Puppet::Node::Facts.terminus_class = :yaml + Puppet::Node::Facts.indirection.terminus_class = :yaml Puppet::Lastcheck::Tests.tests.keys.each do |test| self.send("ignore_#{test}=", Puppet::Lastcheck::Tests.tests[test][:ignore_by_default]||false) unless self.send("ignore_#{test}") diff --git a/files/master/puppet.conf b/files/master/puppet.conf index cf50317..fcaef0d 100644 --- a/files/master/puppet.conf +++ b/files/master/puppet.conf @@ -42,7 +42,7 @@ [puppetmasterd] reportdir = $logdir/reports autoflush = true - storeconfigs=true + #storeconfigs=true dbadapter=mysql dbserver=localhost dbuser=puppet diff --git a/manifests/cron.pp b/manifests/cron.pp index 5f9f227..f593a00 100644 --- a/manifests/cron.pp +++ b/manifests/cron.pp @@ -2,6 +2,7 @@ class puppet::cron inherits puppet { case $operatingsystem { debian: { include puppet::cron::debian } openbsd: { include puppet::cron::openbsd } + freebsd: { include puppet::cron::freebsd } default: { case $kernel { linux: { include puppet::cron::linux } diff --git a/manifests/cron/base.pp b/manifests/cron/base.pp index 7b40da6..7daa6fb 100644 --- a/manifests/cron/base.pp +++ b/manifests/cron/base.pp @@ -1,34 +1,32 @@ # manifests/cron/base.pp class puppet::cron::base inherits puppet::base { - - case $operatingsystem { - debian: { if $lsbdistcodename != 'lenny' { $stop_service = true } else { $stop_service = false } } - openbsd, ubuntu: { $stop_service = false } - default: { $stop_service = true } - } - + Service['puppet']{ enable => false, } - if $stop_service == true { - $puppet_majorversion = regsubst($puppetversion,'^(\d+\.\d+).*$','\1') - if $puppet_majorversion == '2.6' { - Service['puppet']{ - ensure => stopped, - } - } else { - Service['puppet']{ - hasstatus => false, - pattern => 'puppetd', - } - # this works only on < 2.6 - exec { 'stop_puppet': - command => 'kill `cat /var/run/puppet/puppetd.pid`', - onlyif => 'test -f /var/run/puppet/puppetd.pid', - require => Service['puppet'], + case $operatingsystem { + debian,openbsd,ubuntu: { + #it's already disabled + } + default: { + $puppet_majorversion = regsubst($puppetversion,'^(\d+\.\d+).*$','\1') + if $puppet_majorversion == '2.6' { + Service['puppet']{ + ensure => stopped, + } + } else { + Service['puppet']{ + hasstatus => false, + pattern => 'puppetd', + } + # this works only on < 2.6 + exec { 'stop_puppet': + command => 'kill `cat /var/run/puppet/puppetd.pid`', + onlyif => 'test -f /var/run/puppet/puppetd.pid', + require => Service['puppet'], + } } } } } - diff --git a/manifests/cron/freebsd.pp b/manifests/cron/freebsd.pp new file mode 100644 index 0000000..5ff3419 --- /dev/null +++ b/manifests/cron/freebsd.pp @@ -0,0 +1,23 @@ +class puppet::cron::freebsd inherits puppet::freebsd { + + include puppet::cron::base + if $puppet_http_compression { $puppet_http_compression_str = '--http_compression' } + + if !$puppet_crontime { + $puppet_crontime_interval_minute = fqdn_rand(29) + $puppet_crontime_interval_minute2 = inline_template('<%= 30+puppet_crontime_interval_minute.to_i %>') + $puppet_crontime = "${puppet_crontime_interval_minute},${puppet_crontime_interval_minute2} * * * *" + } + + #TODO ensure that the service is disabled in /etc/rc.conf[.local] + + cron { 'puppetd_run': + command => "/usr/local/bin/puppet agent --onetime --no-daemonize --config=${puppet::puppet_config} --color false $puppet_http_compression_str | grep -E '(^err:|^alert:|^emerg:|^crit:)'", + user => 'root', + minute => split(regsubst($puppet_crontime,'^([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+)$','\1'),','), + hour => split(regsubst($puppet_crontime,'^([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+)$','\2'),','), + weekday => split(regsubst($puppet_crontime,'^([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+)$','\3'),','), + month => split(regsubst($puppet_crontime,'^([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+)$','\4'),','), + monthday => split(regsubst($puppet_crontime,'^([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+) ([\d,\-,*,/,\,]+)$','\5'),',') + } +} diff --git a/manifests/cron/linux.pp b/manifests/cron/linux.pp index bab9564..5003559 100644 --- a/manifests/cron/linux.pp +++ b/manifests/cron/linux.pp @@ -16,5 +16,6 @@ class puppet::cron::linux inherits puppet::linux { source => undef, content => "#run puppet\n$puppet_crontime root output=\$(/usr/sbin/puppetd --onetime --no-daemonize --splay --config=/etc/puppet/puppet.conf --color false); ret=\$?; printf \"\\%s\" \"\$output\" | grep -E '(^err:|^alert:|^emerg:|^crit:)'; exit \$ret\n", before => Service['puppet'], + ensure => present } } diff --git a/manifests/freebsd.pp b/manifests/freebsd.pp new file mode 100644 index 0000000..cdce989 --- /dev/null +++ b/manifests/freebsd.pp @@ -0,0 +1,27 @@ +class puppet::freebsd inherits puppet::base { + + case $puppet_ensure_version { + '': { $puppet_ensure_version = 'installed' } + 'removed','absent','installed', 'present': {} # those values are OK + default: { fail('Package providers for FreeBSD cannot ensure that a specific version is installed.') } + } + case $facter_ensure_version { + '': { $facter_ensure_version = 'installed' } + 'removed','absent','installed', 'present': {} # those values are OK + default: { fail('Package providers for FreeBSD cannot ensure that a specific version is installed.') } + } + + package { 'puppet': + ensure => $puppet_ensure_version, + } + + package { 'facter': + ensure => $facter_ensure_version, + } + + Service['puppet'] { + path => '/usr/local/etc/rc.d', + require => Package[puppet], + } + +} diff --git a/manifests/init.pp b/manifests/init.pp index e9d9748..c05631a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -19,8 +19,17 @@ # class puppet { + $default_config_dir = $operatingsystem ? { + freebsd => "/usr/local/etc/puppet", + default => "/etc/puppet", + } + + $puppet_default_config = "$default_config_dir/puppet.conf" + + if $puppet_config == '' { $puppet_config = $puppet_default_config } + case $kernel { - linux: { + linux: { case $operatingsystem { gentoo: { include puppet::gentoo } centos: { include puppet::centos } @@ -29,6 +38,7 @@ class puppet { } } openbsd: { include puppet::openbsd } + freebsd: { include puppet::freebsd } default: { include puppet::base } } diff --git a/manifests/linux.pp b/manifests/linux.pp index fcd3936..13788ef 100644 --- a/manifests/linux.pp +++ b/manifests/linux.pp @@ -19,5 +19,6 @@ class puppet::linux inherits puppet::base { "puppet:///modules/puppet/cron.d/puppetd.${operatingsystem}", "puppet:///modules/puppet/cron.d/puppetd" ], owner => root, group => 0, mode => 0644, + ensure => absent } } diff --git a/manifests/puppetmaster/base.pp b/manifests/puppetmaster/base.pp index 25709ea..a7dc7a5 100644 --- a/manifests/puppetmaster/base.pp +++ b/manifests/puppetmaster/base.pp @@ -1,18 +1,21 @@ class puppet::puppetmaster::base inherits puppet::base { File[puppet_config]{ - source => [ "puppet:///modules/site-puppet/master/puppet.conf", - "puppet:///modules/puppet/master/puppet.conf" ], + source => [ + "puppet:///modules/site-puppet/master/${fqdn}/puppet.conf", + "puppet:///modules/site-puppet/master/puppet.conf", + "puppet:///modules/puppet/master/puppet.conf", + ], } - if !$puppet_fileserverconfig { $puppet_fileserverconfig = '/etc/puppet/fileserver.conf' } + if !$puppet_fileserverconfig { $puppet_fileserverconfig = "${puppet::default_config_dir}/fileserver.conf" } file { "$puppet_fileserverconfig": source => [ "puppet:///modules/site-puppet/master/${fqdn}/fileserver.conf", "puppet:///modules/site-puppet/master/fileserver.conf", "puppet:///modules/puppet/master/fileserver.conf" ], owner => root, group => puppet, mode => 640; - } + } if $puppetmaster_storeconfigs { include puppet::puppetmaster::storeconfigs diff --git a/manifests/puppetmaster/debian.pp b/manifests/puppetmaster/debian.pp index 8cee0ea..a7d7f0a 100644 --- a/manifests/puppetmaster/debian.pp +++ b/manifests/puppetmaster/debian.pp @@ -8,12 +8,19 @@ class puppet::puppetmaster::debian inherits puppet::puppetmaster::package { } } + if $puppetmaster_mode == 'passenger' { + $puppetmaster_default_nofity = 'Exec[notify_passenger_puppetmaster]' + } + file { '/etc/default/puppetmaster': source => [ "puppet:///modules/site-puppet/master/debian/${fqdn}/puppetmaster", "puppet:///modules/site-puppet/master/debian/${domain}/puppetmaster", "puppet:///modules/site-puppet/master/debian/puppetmaster", "puppet:///modules/puppet/master/debian/puppetmaster" ], - notify => Service[puppetmaster], + notify => $puppetmaster_default_nofity ? { + '' => Service[puppetmaster], + default => Exec['notify_passenger_puppetmaster'] + }, owner => root, group => 0, mode => 0644; } } diff --git a/manifests/puppetmaster/linux.pp b/manifests/puppetmaster/linux.pp index 2670203..a5098cd 100644 --- a/manifests/puppetmaster/linux.pp +++ b/manifests/puppetmaster/linux.pp @@ -11,8 +11,8 @@ class puppet::puppetmaster::linux inherits puppet::linux { enable => true, require => [ Package[puppet] ], } - } - Service[puppet]{ - require +> Service[puppetmaster], + Service[puppet]{ + require +> Service[puppetmaster], + } } } diff --git a/manifests/puppetmaster/package/base.pp b/manifests/puppetmaster/package/base.pp index 363f827..ff8d02a 100644 --- a/manifests/puppetmaster/package/base.pp +++ b/manifests/puppetmaster/package/base.pp @@ -4,7 +4,9 @@ class puppet::puppetmaster::package::base inherits puppet::puppetmaster::package ensure => present, } - Service['puppetmaster']{ - require +> Package['puppetmaster'], + if $puppetmaster_mode != 'passenger' { + Service['puppetmaster']{ + require +> Package['puppetmaster'], + } } } diff --git a/manifests/puppetmaster/package/debian.pp b/manifests/puppetmaster/package/debian.pp index 9d7d397..01b7f79 100644 --- a/manifests/puppetmaster/package/debian.pp +++ b/manifests/puppetmaster/package/debian.pp @@ -1,10 +1,33 @@ class puppet::puppetmaster::package::debian inherits puppet::puppetmaster::package::base { - package { 'puppetmaster-common': - ensure => present, + if !$puppetmaster_ensure_version { + $puppetmaster_ensure_version = 'installed' + case $lsbdistcodename { + wheezy,sid: { + $puppetmaster_common_required = 'puppetmaster-common' + $puppetmaster_common_ensure = $puppetmaster_ensure_version + } + default: { + if (versioncmp($puppetmaster_ensure_version, "2.6.7") >= 0) { + $puppetmaster_common_requred = 'puppetmaster-common' + $puppetmaster_common_ensure = $puppetmaster_ensure_version + } + } + } } - - Package['puppetmaster']{ - require => Package['puppetmaster-common'] + + Package["puppetmaster"]{ + require => $puppetmaster_common_required ? { + '' => undef, + default => Package["$puppetmaster_common_required"] + }, + ensure => $puppetmaster_ensure_version, + } + + package { "puppetmaster-common": + ensure => $puppetmaster_common_required ? { + '' => absent, + default => $puppetmaster_common_ensure + }, } } |