# $Id: init.pp 4425 2011-06-17 11:42:17Z uwaechte $ class puppet ( $ensure = "present", $norunifloggedin = false, $daemonize = true, $run_hour = "*/1", $run_minute = "10", $run_if_ipmatch = "") { $puppet_service = $kernel ? { "Darwin" => "org.macports.puppet", "FreeBSD" => "puppetd", default => "puppet" } $factpath = "/var/lib/puppet/lib/facter" case $kernel { "Linux" : { $puppetpkgs = ["puppet", "puppet-common"] Package { provider => "apt" } } default : { $puppetpkgs = "puppet" } } $puppet_linuxversion_real = $PUPPET_VERSION_LINUX ? { "" => "latest", default => $PUPPET_VERSION_LINUX, } package { $puppetpkgs: ensure => $ensure ? { "present" => $kernel ? { "Linux" => $puppet_linuxversion_real, default => $ensure, } }, notify => Service["${puppet_service}"], } package { ["facter"]: ensure => "${ensure}", } service { "${puppet_service}": hasstatus => true, enable => "${daemonize}", ensure => "${daemonize}", } $cron_real = $daemonize ? { false => "present", true => "absent", default => $ensure, } notice("${fqdn} PUPPET-CRON: cron_real: ${cron_real}, daemonize: ${daemonize}, running: ${service_running}") cron { puppetrun: command => "/usr/local/sbin/puppetd_run.sh", user => root, minute => $run_minute, hour => $run_hour, ensure => "${cron_real}", } $maxsleep = 6400 file { "/usr/local/sbin/puppetd_run.sh": content => template("puppet/puppetd_run.sh.erb"), mode => 0700, alias => "puppetd_run.sh", ensure => "${ensure}", } case $kernel { "Darwin" : { file { "/Library/LaunchDaemons/org.macports.puppet.plist": source => "puppet:///modules/puppet/org.macports.puppet.plist", before => Service["${puppet_service}"], } file { "/opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/appdmg.rb": ensure => "absent", } } "Linux" : { replace { "enable_puppet": file => "/etc/default/puppet", pattern => "START=no", replacement => "START=yes", before => Service["${puppet_service}"], } monit::process { "puppet": start => "/etc/init.d/puppet start", stop => "/etc/init.d/puppet stop", pidfile => "/var/run/puppet/agent.pid", additional => "if totalmem > 400 Mb for 10 cycles then RESTART", ensure => $daemonize ? { "true" => "present", default => "absent", }, } } } $puppet_user = $operatingsystem ? { "Darwin" => $adm, default => "puppet", } $puppet_group = $operatingsystem ? { "Darwin" => "wheel", default => "puppet", } # "FreeBSD" => "/usr/local/etc/puppet/puppet.conf", $puppetconf = $operatingsystem ? { default => "/etc/puppet/puppet.conf", } file { $puppetconf: content => template("puppet/puppet.conf.erb"), mode => 0644, owner => $puppet_user, ensure => "${ensure}", # require => [ Package["puppet"] ], } # add facter variable to custom facts. file { "/etc/profile.d/puppet.sh": content => "export FACTERLIB=\"${factpath}\"\n", ensure => $ensure, } } @@puppet::puppetmaster::privatedir { $fqdn: l_fqdn => generate('/usr/bin/env', 'perl', '-e', '$_=shift;tr/[A-Z]/[a-z]/;print $_', "$fqdn") } class puppet::puppet-dashboard ($ensure = "present") { package { ["libjson-ruby", "puppet-dashboard"]: ensure => $ensure, require => Apt::Repository["puppet-dashboard"], } apt::repository { "puppet-dashboard": key => "8347A27F", repository => "deb http://apt.puppetlabs.com ${lsbdistcodename} main\n", ensure => $ensure, } cron { "purge-reports": command => "cd /usr/share/puppet-dashboard && rake RAILS_ENV=production reports:prune upto=14 unit=day", user => "www-data", hour => "23", minute => "2", monthday => "*/14", ensure => $ensure, } cron { "purge-optimizedb": command => "cd /usr/share/puppet-dashboard && rake RAILS_ENV=production db:raw:optimize", user => "www-data", hour => "23", minute => "20", monthday => "*/10", ensure => $ensure, } } class puppet::puppetmaster ($ensure = "present", $puppetqd = false) { if $puppetqd { class { "activemq": ensure => $ensure } package { "libnet-arp-perl": ensure => $ensure } service { "stompserver": ensure => false, enable => false, before => Class["activemq"], } service { "puppetqd": ensure => running, pattern => "puppet queue queue", enable => true, } } Ganglia::Gmetric::Cron { source => "puppet/ganglia", ensure => "${ensure}", } ganglia::gmetric::cron { "puppetmaster.rb": runwhen => "5", } ganglia::gmetric::cron { "puppetmaster_compiletime.rb": runwhen => "60", } # ## remove disk reports from time to time tidy { "${puppet_vardir}/reports": age => "1d", recurse => true, backup => false, } # create [private] directories # file { $puppet_privdir: ensure => directory } # Puppet::Puppetmaster::Privatedir <<| |>> } import "defines/*.pp"