This repository has been archived on 2025-03-16. You can view files and clone it, but cannot push or open issues or pull requests.
Files
puppet/manifests/init.pp
2013-02-02 14:35:50 +01:00

235 lines
6.8 KiB
Puppet

# $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"
}
#Package["puppet-common"]{ before => Package["puppet"] }
}
default : {
$puppetpkgs = "puppet"
}
}
$puppet_linuxversion_real = $PUPPET_VERSION_LINUX ? {
"" => "latest",
default => $PUPPET_VERSION_LINUX,
}
# case $kernel {
# "Linux": {
# exec{"apt-get install -y puppet=$PUPPET_VERSION_LINUX puppet-common=${PUPPET_VERSION_LINUX}":
# onlyif => "apt-show-versions -a puppet |tail -1 |grep -q upgradeable",
# }
# }
# default: {
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/ubuntu lucid main\ndeb-src http://apt.puppetlabs.com/ubuntu lucid 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 = true) {
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"