some refactoring, externalizing classes

This commit is contained in:
do
2013-05-05 21:06:45 +02:00
parent aaea443943
commit fb837f76a9
7 changed files with 130 additions and 93 deletions

View File

@@ -1,11 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# $Id: puppetd_run.sh 2714 2009-08-01 09:52:05Z uwaechte $
# a wrapper script, to run puppetd after a random time # a wrapper script, to run puppetd after a random time
# this will be called by cron at the same time on each client, # this will be called by cron at the same time on each client,
# but should not call the master at the same time as the others. # but should not call the master at the same time as the others.
export FACTERLIB="/var/lib/puppet/facts" [ -e /etc/profile ] && . /etc/profile
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PATH=/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PUPPET=$(which puppetd) PUPPET=$(which puppetd)
ISUNIIP=$(ifconfig |grep -c -e "131\.173\.3[2345]") ISUNIIP=$(ifconfig |grep -c -e "131\.173\.3[2345]")

14
manifests/common.pp Normal file
View File

@@ -0,0 +1,14 @@
class puppet::common ($ensure = 'present') {
package { 'facter':
ensure => $ensure ? {
'present' => 'latest',
default => $ensure,
}
}
# add facter variable to custom facts.
file { "/etc/profile.d/puppet.sh":
content => "export FACTERLIB=\"${factpath}\"\n",
ensure => $ensure,
}
}

View File

@@ -1,4 +1,8 @@
# $Id: init.pp 4425 2011-06-17 11:42:17Z uwaechte $ @@puppet::puppetmaster::privatedir { $fqdn: l_fqdn => generate('/usr/bin/env', 'perl', '-e', '$_=shift;tr/[A-Z]/[a-z]/;print $_',
"$fqdn") }
import "defines/*.pp"
class puppet ( class puppet (
$ensure = "present", $ensure = "present",
$norunifloggedin = false, $norunifloggedin = false,
@@ -13,6 +17,13 @@ class puppet (
} }
$factpath = "/var/lib/puppet/lib/facter" $factpath = "/var/lib/puppet/lib/facter"
require 'puppet::common'
if !defined(Class['puppet::puppetlabs_apt']) {
class { 'puppet::puppetlabs_apt': }
require 'puppet::puppetlabs_apt'
}
case $kernel { case $kernel {
"Linux" : { "Linux" : {
$puppetpkgs = ["puppet", "puppet-common"] $puppetpkgs = ["puppet", "puppet-common"]
@@ -38,8 +49,6 @@ class puppet (
notify => Service["${puppet_service}"], notify => Service["${puppet_service}"],
} }
package { ["facter"]: ensure => "${ensure}", }
service { "${puppet_service}": service { "${puppet_service}":
hasstatus => true, hasstatus => true,
enable => "${daemonize}", enable => "${daemonize}",
@@ -50,7 +59,8 @@ class puppet (
true => "absent", true => "absent",
default => $ensure, default => $ensure,
} }
notice("${fqdn} PUPPET-CRON: cron_real: ${cron_real}, daemonize: ${daemonize}, running: ${service_running}") notice("${fqdn} PUPPET-CRON: cron_real: ${cron_real}, daemonize: ${daemonize}, running: ${service_running}"
)
cron { puppetrun: cron { puppetrun:
command => "/usr/local/sbin/puppetd_run.sh", command => "/usr/local/sbin/puppetd_run.sh",
@@ -75,7 +85,8 @@ class puppet (
before => Service["${puppet_service}"], before => Service["${puppet_service}"],
} }
file { "/opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/appdmg.rb": ensure => "absent", } file { "/opt/local/lib/ruby/site_ruby/1.8/puppet/provider/package/appdmg.rb"
: ensure => "absent", }
} }
"Linux" : { "Linux" : {
replace { "enable_puppet": replace { "enable_puppet":
@@ -118,84 +129,4 @@ class puppet (
# require => [ Package["puppet"] ], # 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"

View File

@@ -0,0 +1,38 @@
class puppet::puppet-dashboard ($ensure = "present") {
require 'puppet::common'
package { ["libjson-ruby", "puppet-dashboard"]:
ensure => $ensure,
require => Apt::Source["puppet-dashboard"],
}
if !defined(Class['puppet::puppetlabs_apt']) {
class { 'puppet::puppetlabs_apt': }
require 'puppet::puppetlabs_apt'
}
apt::source { "puppet-dashboard":
key => "8347A27F",
location => "http://apt.puppetlabs.com",
repos => "main",
ensure => 'absent',
}
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,
}
}

View File

@@ -0,0 +1,8 @@
class puppet::puppetlabs_apt ($ensure = 'present') {
apt::source { 'puppetlabs':
key => '4BD6EC30',
location => 'http://apt.puppetlabs.com',
repos => 'main',
ensure => $ensure,
}
}

48
manifests/puppetmaster.pp Normal file
View File

@@ -0,0 +1,48 @@
class puppet::puppetmaster ($ensure = "present", $puppetqd = false) {
require 'puppet::common'
if !defined(Class['puppet::puppetlabs_apt']) {
class { 'puppet::puppetlabs_apt': }
require 'puppet::puppetlabs_apt'
}
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,
}
}
if defined(Class['ganglia']) {
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 <<| |>>
}

View File

@@ -14,7 +14,7 @@ export FACTERLIB="<%= scope.lookupvar("factpath") %>"
PATH="/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" PATH="/opt/local/bin:/opt/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
PUPPET=$(which puppet) PUPPET=$(which puppet)
[[ -e ${PUPPET} ]] || exit 1 [[ -e ${PUPPET} ]] || exit 1
PUPPET="${PUPPET} agent" PUPPET="${PUPPET}"
<% if run_if_ipmatch != "" -%> <% if run_if_ipmatch != "" -%>
ISUNIIP=$(ifconfig |grep -c -e "<%= run_if_ipmatch %>") ISUNIIP=$(ifconfig |grep -c -e "<%= run_if_ipmatch %>")
<% else -%> <% else -%>
@@ -30,7 +30,7 @@ function cleanup {
if [ -e ${PIDF} ]; then if [ -e ${PIDF} ]; then
PID=`cat ${PIDF}` PID=`cat ${PIDF}`
if [ $(ps -eo pid |grep -c ${PID}) -gt 1 ]; then if [ $(ps -eo pid |grep -c ${PID}) -gt 0 ]; then
exit 0 exit 0
fi fi
fi fi
@@ -66,7 +66,7 @@ if [ ${ISUNIIP} -gt 0 ]; then
# wait maximally $MAXSLEEP seconds # wait maximally $MAXSLEEP seconds
sleep $(expr ${SLEEP} % ${MAXSLEEP}) sleep $(expr ${SLEEP} % ${MAXSLEEP})
# run puppetd # run puppetd
nice -n 12 $PUPPET -t 2&>/var/log/puppet/puppetd_run.log nice -n 12 $PUPPET agent -t 2&>/var/log/puppet/puppetd_run.log
fi fi
fi fi
# cleanup the pidfile # cleanup the pidfile