summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/client/puppet.conf.FreeBSD26
-rw-r--r--files/master/lastruncheck16
-rw-r--r--manifests/cron.pp1
-rw-r--r--manifests/cron/base.pp46
-rw-r--r--manifests/cron/freebsd.pp23
-rw-r--r--manifests/freebsd.pp27
-rw-r--r--manifests/init.pp12
-rw-r--r--manifests/puppetmaster/base.pp4
8 files changed, 122 insertions, 33 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 420730f..d59e489 100644
--- a/files/master/lastruncheck
+++ b/files/master/lastruncheck
@@ -23,9 +23,11 @@ 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 |node|
- { :hostname => node.name, :expired => node.expired?, :timestamp => node.values[:_timestamp], :expiration => node.expiration }
- end
+ @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
end
end
end
@@ -96,7 +98,9 @@ module Puppet::Lastcheck::Tests::Storedconfigs
storedconfigs_hosts.each do |host|
if !facts_hosts.any?{|fact_host| fact_host[:hostname] == host.name }
add_failed_host(host.name, "In storedconfigs but no facts available!")
- elsif host.last_compile.nil? || host.last_compile < (Time.now - @timeout)
+ elsif host.last_compile.nil?
+ add_failed_host(host.name, "No entry in storedconfigs")
+ elsif host.last_compile < (Time.now - @timeout)
add_failed_host(host.name, "Last compile time in storedconfigs at #{host.last_compile}")
end
end
@@ -185,8 +189,8 @@ class Puppet::Application::Lastcheck < Puppet::Application
def setup
exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
- Puppet::Util::Log.newdestination :console
- Puppet::Node::Facts.terminus_class = :yaml
+ #Puppet::Util::Log.newdestination :console
+ 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/manifests/cron.pp b/manifests/cron.pp
index 693a430..9a632ff 100644
--- a/manifests/cron.pp
+++ b/manifests/cron.pp
@@ -5,6 +5,7 @@ class puppet::cron inherits puppet {
linux: { include puppet::cron::linux }
debian: { include puppet::cron::debian }
openbsd: { include puppet::cron::openbsd }
+ freebsd: { include puppet::cron::freebsd }
default: { include puppet::cron::base }
}
}
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/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/puppetmaster/base.pp b/manifests/puppetmaster/base.pp
index f179d47..a7dc7a5 100644
--- a/manifests/puppetmaster/base.pp
+++ b/manifests/puppetmaster/base.pp
@@ -8,14 +8,14 @@ class puppet::puppetmaster::base inherits puppet::base {
],
}
- 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