summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README51
-rw-r--r--files/master/config.ru30
-rw-r--r--files/master/lastruncheck323
-rw-r--r--files/master/puppet.conf9
-rw-r--r--manifests/base.pp8
-rw-r--r--manifests/centos.pp6
-rw-r--r--manifests/cron.pp11
-rw-r--r--manifests/puppetmaster/base.pp11
-rw-r--r--manifests/puppetmaster/centos.pp6
-rw-r--r--manifests/puppetmaster/cleanup_reports.pp6
-rw-r--r--manifests/puppetmaster/cleanup_reports/disable.pp2
-rw-r--r--manifests/puppetmaster/linux.pp2
-rw-r--r--manifests/puppetmaster/package.pp14
-rw-r--r--manifests/puppetmaster/package/base.pp6
-rw-r--r--manifests/puppetmaster/package/debian.pp15
15 files changed, 217 insertions, 283 deletions
diff --git a/README b/README
index 2063b03..3210c7b 100644
--- a/README
+++ b/README
@@ -1,16 +1,28 @@
Puppet-Module for configuring Puppet itself, both the master and the clients
============================================================================
-Use a seperate local module called "site-puppet", where you place your customized
+Use a seperate local module called "site_puppet", where you place your customized
files, under:
- site-puppet/files/master/fileserver.conf
- site-puppet/files/master/puppet.conf
+ site_puppet/files/master/fileserver.conf
+ site_puppet/files/master/puppet.conf
Usage
=====
-The module currently looks for values on different variables to adjust
-configuration of the master.
+The module currently looks for different variable values to adjust configuration
+of the master.
+
+Installing a specific versions
+------------------------------
+
+If you need to install a different version of puppet, other than the most recent,
+you can set the following variable:
+
+$puppet_ensure_version = '2.7.18-1~bpo60+1'
+
+You can also specify a different facter version by setting the following variable:
+
+$facter_ensure_version = '1.6.9-2~bpo60+2'
Run puppet by cron:
-------------------
@@ -49,6 +61,24 @@ mode, you can set $puppetmaster_mode either to:
In both cases you have to setup the appropriate frontends (apache vhost
configuration/nginx vhost configuration) on your own.
+If you need to install a specific version of puppetmaster, you can specify the
+version to be installed by doing the following:
+
+$puppetmaster_ensure_version = '2.7.18-1~bpo60+1'
+
+NOTE: You will need the apt module in order to specify the puppetmaster version.
+Also, this functionality is only implemented for Debian and derived distributions.
+
+This is the apparent minimum manifest for installing puppetmaster:
+
+ import 'common'
+
+ include apt
+ include concat::setup
+ $puppetmaster_mode = 'passenger'
+ include puppet::puppetmaster
+
+
Munin
-----
@@ -68,6 +98,9 @@ values:
* 'X', where X is the amount of days you want to keep reports for
* false, to disable reports cleanup
+If your reports are in a different place than the default, you can set
+$puppetmaster_reports_dir to adjust their location.
+
Check last run:
---------------
@@ -92,7 +125,7 @@ $puppet_storeconfig_password to the puppet database password, and then set
$puppetmaster_storeconfigs = true to enable stored configs.
Then you will need to either put in your node definition, or in
-site-puppet/manifests/init.pp puppet::puppetmaster::hasdb to setup the database
+site_puppet/manifests/init.pp puppet::puppetmaster::hasdb to setup the database
with the right parameters. This will setup your storeconfigs database, adding to
the database the correct user, the correct grant permissions, and also setup
a munin graph, if you have $use_munin = true
@@ -112,14 +145,14 @@ node puppetmaster {
$use_munin = true
$puppetmaster_mode = 'passenger'
$puppet_crontime = "0,12 * * * *"
- include site-puppet::master
+ include site_puppet::master
include puppet::cron
include puppet::puppetmaster
...
-in your site-puppet/manifests/master.pp you could include something like:
+in your site_puppet/manifests/master.pp you could include something like:
-class site-puppet::master {
+class site_puppet::master {
...
puppet::puppetmaster::hasdb { "puppet":
dbname => 'puppetmaster',
diff --git a/files/master/config.ru b/files/master/config.ru
index cec2a34..b0fd250 100644
--- a/files/master/config.ru
+++ b/files/master/config.ru
@@ -4,26 +4,28 @@
# if puppet is not in your RUBYLIB:
# $:.unshift('/opt/puppet/lib')
-$0 = "puppetmasterd"
-require 'puppet'
-
-# logs to file instead of syslog
-#Puppet::Util::Log.newdestination("/var/log/puppet/puppetmasterd.log")
+$0 = "master"
# if you want debugging:
-#ARGV << "--debug"
+# ARGV << "--debug"
ARGV << "--rack"
-# in some setups puppetmasterd doesn't seem to read the puppet.conf
-# config at startup, then you need to pass these options:
-ARGV << "--vardir" << "/var/lib/puppet"
-ARGV << "--ssldir" << "/var/lib/puppet/ssl"
-# if you use puppet-dashboard:
-#ARGV << "--reports" << "puppet_dashboard"
+# NOTE: it's unfortunate that we have to use the "CommandLine" class
+# here to launch the app, but it contains some initialization logic
+# (such as triggering the parsing of the config file) that is very
+# important. We should do something less nasty here when we've
+# gotten our API and settings initialization logic cleaned up.
+#
+# Also note that the "$0 = master" line up near the top here is
+# the magic that allows the CommandLine class to know that it's
+# supposed to be running master.
+#
+# --cprice 2012-05-22
-require 'puppet/application/puppetmasterd'
+require 'puppet/util/command_line'
# we're usually running inside a Rack::Builder.new {} block,
# therefore we need to call run *here*.
-run Puppet::Application[:puppetmasterd].run
+run Puppet::Util::CommandLine.new.execute
+
diff --git a/files/master/lastruncheck b/files/master/lastruncheck
index d59e489..72c0eb5 100644
--- a/files/master/lastruncheck
+++ b/files/master/lastruncheck
@@ -1,224 +1,101 @@
-#!/usr/bin/env ruby
-require 'puppet/application'
-
-module Puppet::Lastcheck
- module Puppet::Lastcheck::Tests
- def self.included(klass)
- klass.extend ClassMethods
- end
- def self.tests
- @tests ||= {}
- end
- module ClassMethods
- def add_test(name, options={})
- include Puppet::Lastcheck::Tests.const_get(name.to_s.split('_').collect{|s| s.capitalize }.join(''))
- Puppet::Lastcheck::Tests.tests[name] = options
- attr_accessor "ignore_#{name}".to_sym
- option("--ignore-#{name.to_s.gsub(/_/,'-')}") do
- self.send("ignore_#{name}=", true)
- end
- end
- end
- module Util
- def facts_hosts
- return @facts_hosts if @facts_hosts
- require 'puppet/indirector/facts/yaml'
- @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
- module Puppet::Lastcheck::Reports
- def self.included(klass)
- klass.extend ClassMethods
- end
- def ordered_reports
- @ordered_reports ||= Puppet::Lastcheck::Reports.reports.keys.sort{|a,b| Puppet::Lastcheck::Reports.reports[a][:priority] <=> Puppet::Lastcheck::Reports.reports[b][:priority] }
- end
-
- def self.reports
- @reports ||= {}
- end
- module ClassMethods
- def add_report(name, options={})
- include Puppet::Lastcheck::Reports.const_get(name.to_s.split('_').collect{|s| s.capitalize }.join(''))
- Puppet::Lastcheck::Reports.reports[name] = options
- Puppet::Lastcheck::Reports.reports[name][:priority] ||= 100
- attr_accessor "report_to_#{name}".to_sym
- option("--report-to-#{name.to_s.gsub(/_/,'-')}") do
- self.send("report_to_#{name}=", true)
- end
- end
- end
- end
-end
-
-module Puppet::Lastcheck::Tests::NoFacts
- def analyze_no_facts
- signed_hosts.each{|host| add_failed_host(host,"No facts available") unless facts_hosts.any?{|fhost| fhost[:hostname] == host } }
- end
- def setup_no_facts
- Puppet::SSL::Host.ca_location = :only
- end
-
- private
- def signed_hosts
- ca.list
- end
-
- def ca
- @ca ||= Puppet::SSL::CertificateAuthority.new
- end
-end
-
-module Puppet::Lastcheck::Tests::ExpiredFacts
- include Puppet::Lastcheck::Tests::Util
- def analyze_expired_facts
- facts_hosts.each{|host| add_failed_host(host[:hostname],"Expired at #{host[:expiration]}") if host[:expired] }
- end
-end
-module Puppet::Lastcheck::Tests::TimedOutFacts
- include Puppet::Lastcheck::Tests::Util
- def analyze_timed_out_facts
- require 'time'
- facts_hosts.each{|host| add_failed_host(host[:hostname], "Last facts save at #{host[:timestamp]}") if Time.parse(host[:timestamp].to_s) < (Time.now - @timeout) }
- end
-
- def setup_timed_out_facts
- if @timeout
- ignore_expired_facts ||= true
- end
- end
-end
-module Puppet::Lastcheck::Tests::Storedconfigs
- def analyze_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?
- 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
- end
-
- private
- def storedconfigs_hosts
- return @storedconfigs_hosts if @storedconfigs_hosts
- Puppet::Rails.connect
- @storedconfigs_hosts = Puppet::Rails::Host.all
- end
-end
-module Puppet::Lastcheck::Reports::Console
- def deliver_report_to_console(failing_hosts)
- unless failing_hosts.empty?
- puts 'The following hosts are out of date:'
- puts '------------------------------------'
- host_length = 0
- failing_hosts.keys.each{|host| host_length = host.length if host.length > host_length }
- failing_hosts.keys.each{ |host| puts "#{pretty_puts(host,host_length)} - Reason: #{failing_hosts[host][:reason]}" }
- 1
- else
- 0
- end
- end
-end
-module Puppet::Lastcheck::Reports::Nagios
- def deliver_report_to_nagios(failing_hosts)
- unless failing_hosts.empty?
- puts "PUPPETLAST CRITICAL: #{failing_hosts.size} outdated hosts: #{failing_hosts.keys.join(',')}"
- 2
- else
- puts "PUPPETLAST OK: No outdated hosts"
- 0
- end
- end
-end
-#
-# = Synopsis
-#
-# Verifiying your puppet runs. Check different places to verify
-# whether your clients actually still runs successfully.
-# Also checks for left overs of legacy hosts.
+#!/bin/bash
#
-# = Usage
-#
-# puppet lastcheck [-h|--help]
-class Puppet::Application::Lastcheck < Puppet::Application
-
- should_parse_config
- run_mode :master
-
- include Puppet::Lastcheck::Tests
- add_test :no_facts
- add_test :expired_facts, :ignore_by_default => true
- add_test :timed_out_facts
- add_test :storedconfigs
-
- include Puppet::Lastcheck::Reports
- add_report :console, :priority => 50
- add_report :nagios
-
- option("--timeout TIMEOUT") do |v|
- @timeout = v.to_i
- end
-
- option("--ignore-hosts HOSTS") do |v|
- @ignore_hosts = v.split(',')
- end
-
- def main
-
- Puppet::Lastcheck::Tests.tests.keys.each do |test|
- self.send("analyze_#{test}") unless self.send("ignore_#{test}")
- end
- exitcode = 0
- ordered_reports.each do |report|
- if self.send("report_to_#{report}")
- tmpexitcode = self.send("deliver_report_to_#{report}",@failing_hosts)
- exitcode = tmpexitcode unless exitcode > 0
- end
- end
- exit(exitcode)
- end
-
- def setup
- exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
-
- #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}")
- self.send("setup_#{test}") if self.respond_to?("setup_#{test}") and !self.send("ignore_#{test}")
- end
- report = nil
- report_activated = false
- ordered_reports.each do |report|
- report_activated ||= self.send("report_to_#{report}")
- end
- self.report_to_console = true unless report_activated
-
- @ignore_hosts = [] unless @ignore_hosts
- @failing_hosts = {}
- unless @timeout
- @timeout = Puppet[:runinterval]
- end
- end
-
- private
-
- def add_failed_host(hostname,reason)
- @failing_hosts[hostname] = { :reason => reason } unless (@failing_hosts[hostname] || @ignore_hosts.include?(hostname))
- end
-
- def pretty_puts(str,length)
- sprintf("%0-#{length}s",str)
- end
-end
-
-Puppet::Application.find('lastcheck').new.run
+# Nagios checking script that whines if a node hasn't checked in with the
+# master for a day or more and sets a critical status if the node hasn't
+# checked in for a week or longer. You can of course tweak those thresholds
+# if you want.
+
+# Spot of configuration. Basically just specify where the yaml files live.
+YAMLPATH=/var/lib/puppet/yaml/node
+STATUS_OK=0
+STATUS_WARNING=1
+STATUS_CRITICAL=2
+STATUS_UNKNOWN=3
+INTERVAL_WARNING=$((60 * 60 * 2))
+INTERVAL_CRITICAL=$((60 * 60 * 24))
+PARAMS="-la"
+
+# A space separated list of hostnames to ignore. These might for instance be
+# laptops that just don't get used every day and thus don't sync.
+IGNORE_HOSTS=""
+
+# Override settings from a config file if one exists.
+if [ -f /etc/default/check_puppetmaster ]; then
+ . /etc/default/check_puppetmaster
+fi
+
+# Early exit if no read access to the yaml files.
+if [ ! -r ${YAMLPATH} ]; then
+ echo "UNKNOWN: Cannot access ${YAMLPATH}"
+ exit ${STATUS_UNKNOWN}
+fi
+
+# Bunch of internal vars used for status info output.
+status="OK"
+ret=${STATUS_OK}
+i_count=0
+o_count=0
+w_count=0
+w_string=""
+e_count=0
+e_string=""
+
+# Current time.
+NOW=$(date +"%s")
+
+# The meat.
+
+# Get all hostnames associated with active certificates, and check the time
+# each of these last checked in with the server. Do this by converting the
+# yaml file expiration datestamp to epoch format and subtracting it from now.
+for node in $(/usr/sbin/puppetca ${PARAMS} | awk '/^\+/ {print $2}' | tr -d '"'); do
+
+ EXPIRATION=$(grep expiration ${YAMLPATH}/$node.yaml | awk '{printf("%s %s", $2, $3);}')
+ typeset -i CHECKIN=$(date +"%s" -d "${EXPIRATION}")
+ DIFFERENCE=$((${NOW} - ${CHECKIN}))
+
+ # Count hosts and generate some output strings based on the status.
+ if [ ${DIFFERENCE} -lt ${INTERVAL_WARNING} ]; then
+ o_count=$((${o_count} + 1));
+ else
+ # If there is an issue, first check if we can ignore this host.
+ if [ -n "${IGNORE_HOSTS}" ]; then
+ if [[ ${IGNORE_HOSTS} =~ ${node} ]]; then
+ i_count=$((${i_count} + 1))
+ continue
+ fi
+ fi
+ if [ ${DIFFERENCE} -gt ${INTERVAL_CRITICAL} ]; then
+ e_count=$((${e_count} + 1))
+ e_string="${e_string} ${node}"
+ else
+ w_count=$((${w_count} + 1))
+ w_string="${w_string} ${node}"
+ fi
+ fi
+done
+
+# Generate a status string for user display.
+if [ -n "${e_string}" ]; then
+ s_string="${s_string} ${e_count} critical (${e_string## });"
+fi
+if [ -n "${w_string}" ]; then
+ s_string="${s_string} ${w_count} warning (${w_string## });"
+fi
+if [ ${i_count} -gt 0 ]; then
+ s_string="${s_string} ${i_count} ignored;"
+fi
+s_string="${s_string} ${o_count} ok."
+
+# Create a return value and status string.
+if [ ${e_count} -gt 0 ]; then
+ status="CRITICAL"
+ ret=${STATUS_CRITICAL}
+elif [ ${w_count} -gt 0 ]; then
+ status="WARNING"
+ ret=${STATUS_WARNING}
+fi
+
+# Output the status and inform the user about which hosts are lagging.
+echo -n "${status}:${s_string}"
+exit $ret
diff --git a/files/master/puppet.conf b/files/master/puppet.conf
index 6b4b0e9..f6471d7 100644
--- a/files/master/puppet.conf
+++ b/files/master/puppet.conf
@@ -20,7 +20,7 @@
factpath = $vardir/lib/facter
plugindest = $vardir/lib/puppet
-[puppetd]
+[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
# the separate ``puppet`` executable using the ``--loadclasses``
@@ -35,14 +35,13 @@
report=true
pluginsync = true
- factsync=true
logdest=/var/log/puppet/puppet.log
-[puppetmasterd]
+[master]
reportdir = $logdir/reports
autoflush = true
- storeconfigs=true
+ #storeconfigs=true
dbadapter=mysql
dbserver=localhost
dbuser=puppet
@@ -63,7 +62,7 @@
# configure environments
[development]
manifest=$vardir/development/etc/manifests/site.pp
- modulepath=$vardir/development/manifests
+ modulepath=$vardir/development/modules/
templatepath=$vardir/development/templates/
[production]
diff --git a/manifests/base.pp b/manifests/base.pp
index 69a7568..6ff8fa5 100644
--- a/manifests/base.pp
+++ b/manifests/base.pp
@@ -6,7 +6,7 @@ class puppet::base {
case $puppet_cleanup_clientbucket {
# if not set, don't do anything
- '': {}
+ '',undef: {}
default: {
tidy { "/var/lib/puppet/clientbucket":
backup => false,
@@ -20,9 +20,9 @@ class puppet::base {
file { 'puppet_config':
path => "$puppet_config",
- source => [ "puppet:///modules/site-puppet/client/${fqdn}/puppet.conf",
- "puppet:///modules/site-puppet/client/puppet.conf.$operatingsystem",
- "puppet:///modules/site-puppet/client/puppet.conf",
+ source => [ "puppet:///modules/site_puppet/client/${fqdn}/puppet.conf",
+ "puppet:///modules/site_puppet/client/puppet.conf.$operatingsystem",
+ "puppet:///modules/site_puppet/client/puppet.conf",
"puppet:///modules/puppet/client/${puppet_majorversion}/puppet.conf.$operatingsystem",
"puppet:///modules/puppet/client/${puppet_majorversion}/puppet.conf",
"puppet:///modules/puppet/client/puppet.conf.$operatingsystem",
diff --git a/manifests/centos.pp b/manifests/centos.pp
index 61aa065..d98f422 100644
--- a/manifests/centos.pp
+++ b/manifests/centos.pp
@@ -1,9 +1,9 @@
class puppet::centos inherits puppet::linux {
file { '/etc/sysconfig/puppet':
- source => [ "puppet:///modules/site-puppet/sysconfig/${fqdn}/puppet",
- "puppet:///modules/site-puppet/sysconfig/${domain}/puppet",
- "puppet:///modules/site-puppet/sysconfig/puppet",
+ source => [ "puppet:///modules/site_puppet/sysconfig/${fqdn}/puppet",
+ "puppet:///modules/site_puppet/sysconfig/${domain}/puppet",
+ "puppet:///modules/site_puppet/sysconfig/puppet",
"puppet:///modules/puppet/sysconfig/puppet" ],
notify => Service[puppet],
owner => root, group => 0, mode => 0644;
diff --git a/manifests/cron.pp b/manifests/cron.pp
index 644475e..8cb4644 100644
--- a/manifests/cron.pp
+++ b/manifests/cron.pp
@@ -1,10 +1,13 @@
-# manifests/cron.pp
-
class puppet::cron inherits puppet {
case $operatingsystem {
- linux,debian,ubuntu: { include puppet::cron::linux }
+ debian,ubuntu: { include puppet::cron::linux }
openbsd: { include puppet::cron::openbsd }
freebsd: { include puppet::cron::freebsd }
- default: { include puppet::cron::base }
+ default: {
+ case $kernel {
+ linux: { include puppet::cron::linux }
+ default: { include puppet::cron::base }
+ }
+ }
}
}
diff --git a/manifests/puppetmaster/base.pp b/manifests/puppetmaster/base.pp
index f2d8613..a313ff2 100644
--- a/manifests/puppetmaster/base.pp
+++ b/manifests/puppetmaster/base.pp
@@ -1,15 +1,18 @@
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 = "${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",
+ 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;
}
diff --git a/manifests/puppetmaster/centos.pp b/manifests/puppetmaster/centos.pp
index 2673a4d..a6f5e23 100644
--- a/manifests/puppetmaster/centos.pp
+++ b/manifests/puppetmaster/centos.pp
@@ -2,9 +2,9 @@
class puppet::puppetmaster::centos inherits puppet::puppetmaster::package {
file { '/etc/sysconfig/puppetmaster':
- source => [ "puppet:///modules/site-puppet/sysconfig/${fqdn}/puppetmaster",
- "puppet:///modules/site-puppet/sysconfig/${domain}/puppetmaster",
- "puppet:///modules/site-puppet/sysconfig/puppetmaster",
+ source => [ "puppet:///modules/site_puppet/sysconfig/${fqdn}/puppetmaster",
+ "puppet:///modules/site_puppet/sysconfig/${domain}/puppetmaster",
+ "puppet:///modules/site_puppet/sysconfig/puppetmaster",
"puppet:///modules/puppet/sysconfig/puppetmaster" ],
notify => Service[puppetmaster],
owner => root, group => 0, mode => 0644;
diff --git a/manifests/puppetmaster/cleanup_reports.pp b/manifests/puppetmaster/cleanup_reports.pp
index 664bd81..1f8c021 100644
--- a/manifests/puppetmaster/cleanup_reports.pp
+++ b/manifests/puppetmaster/cleanup_reports.pp
@@ -1,8 +1,8 @@
class puppet::puppetmaster::cleanup_reports {
-
+ case $puppetmaster_reports_dir { '',undef: { $puppetmaster_reports_dir = '/var/lib/puppet/reports' } }
# clean up reports older than $puppetmaster_cleanup_reports days
- file { '/etc/cron.daily/puppet_reports_cleanup.sh':
- content => "#!/bin/bash\nfind /var/lib/puppet/reports/ -maxdepth 2 -type f -ctime +${puppetmaster_cleanup_reports} -exec rm {} \\;\n",
+ file { '/etc/cron.daily/puppet_reports_cleanup':
+ content => "#!/bin/bash\nfind ${puppetmaster_reports_dir} -maxdepth 2 -type f -ctime +${puppetmaster_cleanup_reports} -exec rm {} \\;\n",
owner => root, group => 0, mode => 0700;
}
}
diff --git a/manifests/puppetmaster/cleanup_reports/disable.pp b/manifests/puppetmaster/cleanup_reports/disable.pp
index 8636223..0b6da05 100644
--- a/manifests/puppetmaster/cleanup_reports/disable.pp
+++ b/manifests/puppetmaster/cleanup_reports/disable.pp
@@ -1,6 +1,6 @@
class puppet::puppetmaster::cleanup_reports::disable inherits puppet::puppetmaster::cleanup_reports {
- File['/etc/cron.daily/puppet_reports_cleanup.sh']{
+ File['/etc/cron.daily/puppet_reports_cleanup']{
ensure => absent,
}
}
diff --git a/manifests/puppetmaster/linux.pp b/manifests/puppetmaster/linux.pp
index 7c2e428..39ca544 100644
--- a/manifests/puppetmaster/linux.pp
+++ b/manifests/puppetmaster/linux.pp
@@ -6,7 +6,7 @@ class puppet::puppetmaster::linux inherits puppet::linux {
exec { 'notify_passenger_puppetmaster':
refreshonly => true,
- #command => 'touch /etc/puppet/rack/tmp/restart.txt && sleep 1 && rm /etc/puppet/rack/tmp/restart.txt',
+ # command => '/usr/bin/touch /etc/puppet/rack/tmp/restart.txt && sleep 1 && /bin/rm /etc/puppet/rack/tmp/restart.txt',
command => '/etc/init.d/apache2 reload',
}
diff --git a/manifests/puppetmaster/package.pp b/manifests/puppetmaster/package.pp
index 145792e..aef3121 100644
--- a/manifests/puppetmaster/package.pp
+++ b/manifests/puppetmaster/package.pp
@@ -1,9 +1,17 @@
# manifests/puppetmaster/package.pp
-class puppet::puppetmaster::package inherits puppet::puppetmaster::linux {
+class puppet::puppetmaster::package {
case $operatingsystem {
- centos: { include puppet::puppetmaster::package::centos }
+ centos: {
+ if $puppetmaster_ensure_version {
+ warn('$puppetmaster_ensure_version is not supported for this operatingsystem')
+ }
+ include puppet::puppetmaster::package::centos }
debian: { include puppet::puppetmaster::package::debian }
- default: { include puppet::puppetmaster::package::base }
+ default: {
+ if $puppetmaster_ensure_version {
+ warn('$puppetmaster_ensure_version is not supported for this operatingsystem')
+ }
+ include puppet::puppetmaster::package::base }
}
}
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 21407bb..cea7ac4 100644
--- a/manifests/puppetmaster/package/debian.pp
+++ b/manifests/puppetmaster/package/debian.pp
@@ -1,6 +1,13 @@
-class puppet::puppetmaster::package::debian inherits puppet::puppetmaster::package {
+class puppet::puppetmaster::package::debian {
- #Package['puppetmaster']{
- # require => Package['puppetmaster-common']
- #}
+ include puppet::puppetmaster::package::base
+
+ apt::preferences_snippet {
+ 'puppet_passenger':
+ package => 'puppet*',
+ pin => "version $puppetmaster_ensure_version",
+ priority => 2000,
+ notify => Exec['refresh_apt'],
+ before => Package['puppetmaster'];
+ }
}