summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/client/puppet.conf.FreeBSD26
-rw-r--r--files/master/lastruncheck6
-rw-r--r--files/master/puppet.conf2
-rw-r--r--manifests/cron.pp1
-rw-r--r--manifests/cron/base.pp46
-rw-r--r--manifests/cron/freebsd.pp23
-rw-r--r--manifests/cron/linux.pp1
-rw-r--r--manifests/freebsd.pp27
-rw-r--r--manifests/init.pp12
-rw-r--r--manifests/linux.pp1
-rw-r--r--manifests/puppetmaster/base.pp11
-rw-r--r--manifests/puppetmaster/debian.pp9
-rw-r--r--manifests/puppetmaster/linux.pp6
-rw-r--r--manifests/puppetmaster/package/base.pp6
-rw-r--r--manifests/puppetmaster/package/debian.pp33
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
+ },
}
}