refactored it all

This commit is contained in:
Udo Waechter
2014-05-26 14:56:57 +02:00
parent 152b1f327b
commit 454516453f
6 changed files with 214 additions and 185 deletions

83
manifests/agent.pp Normal file
View File

@@ -0,0 +1,83 @@
class puppet::agent (
$ensure = 'present',
$version = undef,
$norunifloggedin = false,
$daemonize = true,
$run_hour = '*/1',
$run_minute = '10',
$run_if_ipmatch = undef,
$maxsleep = '3200') {
case $::kernel {
'Linux' : {
$puppetpkgs = ['puppet', 'puppet-common']
Package {
provider => 'apt' }
if $::lsbdistid != 'Ubuntu' {
package { 'ruby-msgpack': ensure => $ensure }
}
}
default : {
$puppetpkgs = 'puppet'
}
}
$pkg_ens = $ensure ? {
'present' => $::kernel ? {
'Linux' => $version,
default => $ensure,
},
default => $ensure,
}
package { $puppetpkgs:
ensure => $pkg_ens,
notify => Service['puppet'],
}
service { 'puppet':
hasstatus => true,
enable => $daemonize,
ensure => $daemonize,
}
$cron_real = $daemonize ? {
false => 'present',
true => 'absent',
default => $ensure,
}
cron { 'puppetrun':
command => '/usr/local/sbin/puppetd_run.sh',
user => 'root',
minute => $run_minute,
hour => $run_hour,
ensure => $cron_real,
}
file {
'/usr/local/sbin/puppetd_run.sh':
content => template('puppet/puppetd_run.sh.erb'),
mode => '0700',
alias => 'puppetd_run.sh',
ensure => $ensure;
'/var/log/puppet':
mode => '0750',
owner => 'puppet',
group => 'puppet';
}
# #settings
if $ensure != 'absent' {
Ini_setting {
path => '/etc/puppet/puppet.conf',
section => 'agent',
}
ini_setting { 'puppet-agent-splay':
setting => 'splay',
value => $maxsleep;
}
}
}

View File

@@ -1,21 +0,0 @@
class puppet::client (
$ensure = 'present',
$version = $::PUPPET_VERSION) {
class { 'puppet':
daemonize => false,
require => Exec['apt_update'],
}
if !defined(Class['puppet::puppetlabs_apt']) {
class { 'puppet::puppetlabs_apt': }
require 'puppet::puppetlabs_apt'
}
apt::pin { 'puppet':
version => $version,
packages => 'puppet*',
priority => '100',
}
}

11
manifests/environment.pp Normal file
View File

@@ -0,0 +1,11 @@
define puppet::environment (
$ensure = 'present',
$modulepath) {
ini_setting { "puppet-server-environment-${name}":
path => '/etc/puppet/puppet.conf',
section => $name,
setting => 'modulepath',
value => $modulepath,
ensure => $ensure,
}
}

View File

@@ -1,136 +1,59 @@
#import 'defines/*.pp'
class puppet (
$ensure = 'present',
$norunifloggedin = false,
$daemonize = true,
$run_hour = '*/1',
$run_minute = '10',
$run_if_ipmatch = '',
$maxsleep = '3200'
) {
$puppet_service = $::kernel ? {
'Darwin' => 'org.macports.puppet',
'FreeBSD' => 'puppetd',
default => 'puppet'
}
$factpath = '/var/lib/puppet/lib/facter'
require 'puppet::facter'
if !defined(Class['puppet::puppetlabs_apt']) {
$ensure = 'present',
$version = undef,
$pupppetlabs_apt = true,
$agent = true,
$agent_norunifloggedin = false,
$agent_daemonize = true,
$agent_run_hour = '*/1',
$agent_run_minute = '10',
$agent_run_if_ipmatch = '',
$agent_maxsleep = '3200',
$server = false,
$server_dns_alt_names = undef,
$server_storeconfigs = false,
$server_storeconfigs_backend = undef,
$server_basemodulepath = undef,
$server_reports = 'store',
$server_passenger = true) {
if $puppetlabs_apt {
require 'puppet::puppetlabs_apt'
}
# @@puppet::puppetmaster::privatedir { $fqdn: l_fqdn => generate('/usr/bin/env', 'perl', '-e', '$_=shift;tr/[A-Z]/[a-z]/;print $_',
# "$fqdn") }
case $::kernel {
'Linux' : {
$puppetpkgs = ['puppet', 'puppet-common']
Package {
provider => 'apt' }
if $::lsbdistid != 'Ubuntu' {
package{'ruby-msgpack': ensure => $ensure}
}
}
default : {
$puppetpkgs = 'puppet'
if $version != undef {
apt::pin { 'puppet':
version => $version,
packages => 'puppet*',
priority => '100',
}
}
$puppet_linuxversion_real = $::PUPPET_VERSION_LINUX ? {
'' => 'latest',
default => $::PUPPET_VERSION_LINUX,
class { 'puppet::facter':
ensure => $ensure,
}
$pkg_ens = $ensure ? {
'present' => $::kernel ? {
'Linux' => $puppet_linuxversion_real,
default => $ensure,
},
default => $ensure,
}
package { $puppetpkgs:
ensure => $pkg_ens,
notify => Service[$puppet_service],
if $agent {
class { 'puppet::agent':
ensure => $ensure,
version => $version,
norunifloggedin => $agent_norunifloggedin,
daemonize => $agent_daemonize,
run_hour => $agent_run_hour,
run_if_ipmatch => $agent_run_if_ipmatch,
maxsleep => $agent_max_sleep
}
}
service { $puppet_service:
hasstatus => true,
enable => $daemonize,
ensure => $daemonize,
if $server {
class { 'puppet::server':
ensure => $ensure,
version => $version,
dns_alt_names => $server_dns_alt_names,
storeconfigs => $server_storeconfigs,
storeconfigs_backend => $server_storeconfigs_backend,
reports => $server_reports,
basemodulepath => $server_basemodulepath,
passenger => $server_passenger;
}
}
$cron_real = $daemonize ? {
false => 'present',
true => 'absent',
default => $ensure,
}
cron { 'puppetrun':
command => '/usr/local/sbin/puppetd_run.sh',
user => 'root',
minute => $run_minute,
hour => $run_hour,
ensure => $cron_real,
}
file { '/usr/local/sbin/puppetd_run.sh':
content => template('puppet/puppetd_run.sh.erb'),
mode => '0700',
alias => 'puppetd_run.sh',
ensure => $ensure;
'/var/log/puppet':
mode => '0750',owner => 'puppet',group => 'puppet';
}
case $::kernel {
'Darwin' : {
file { '/Library/LaunchDaemons/org.macports.puppet.plist':
source => 'puppet:///modules/puppet/org.macports.puppet.plist',
before => Service[$puppet_service],
}
}
'Linux' : {
# replace { 'enable_puppet':
# file => '/etc/default/puppet',
# pattern => 'START=no',
# replacement => 'START=yes',
# before => Service[$puppet_service],
# }
if defined(Class['monit']) {
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:
ensure => $ensure,
content => template('puppet/puppet.conf.erb'),
mode => '0644',
owner => $puppet_user,
# require => [ Package["puppet"] ],
}
}

View File

@@ -1,40 +0,0 @@
class puppet::puppetmaster (
$ensure = 'present',
$dns_alt_names = undef,
$storeconfigs = false,
$storeconfigs_backend = undef,
$reports = undef,
$modulepath = undef) {
require 'puppet::facter'
if !defined(Class['puppet::puppetlabs_apt']) {
class { 'puppet::puppetlabs_apt': }
require 'puppet::puppetlabs_apt'
}
if defined(Class['ganglia::monitor']) {
Ganglia::Gmetric::Cron {
source => 'puppet/ganglia',
ensure => $ensure,
}
ganglia::gmetric::cron {
'puppetmaster.rb':
runwhen => '5';
'puppetmaster_compiletime.rb':
runwhen => '60',
}
}
# ## remove disk reports from time to time
tidy { "${::puppet_vardir}/reports":
age => '1m',
recurse => true,
backup => false,
}
# create [private] directories
# file { $puppet_privdir: ensure => directory }
# Puppet::Puppetmaster::Privatedir <<| |>>
}

73
manifests/server.pp Normal file
View File

@@ -0,0 +1,73 @@
class puppet::server (
$ensure = 'present',
$dns_alt_names = undef,
$storeconfigs = false,
$storeconfigs_backend = undef,
$reports = undef,
$basemodulepath = undef,
$version = undef,
$passenger = true) {
if $passenger == true {
$pkg = 'puppetmaster-passenger'
} else {
$pkg = 'puppetmaster'
}
$pkg_ens = $ensure ? {
'present' => $::kernel ? {
'Linux' => $version,
default => $ensure,
},
default => $ensure,
}
package { ['puppetmaster-common', $pkg]: ensure => $pkg_ens, }
# ## remove disk reports from time to time
tidy { "${::puppet_vardir}/reports":
age => '4w',
recurse => true,
backup => false,
}
Ini_setting {
path => '/etc/puppet/puppet.conf',
section => 'master',
}
$dns_pres = $dns_alt_names ? {
undef => 'absent',
default => 'present',
}
ini_setting { 'puppet-server-dns_alt_names':
ensure => $dns_pres,
setting => 'dns_alt_names',
value => $dns_alt_names;
}
$mpath_pres = $basemodulepath ? {
undef => 'absent',
default => 'present',
}
ini_setting { 'puppet-server-basemodulepath':
ensure => $mpath_pres,
setting => 'basemodulepath',
value => $basemodulepath;
}
ini_setting {
'puppet-server-storeconfigs':
setting => 'storeconfigs',
value => $storeconfigs;
'puppet-server-storeconfigs_backend':
setting => 'storeconfigs_backend',
value => $storeconfigs_backend;
'puppet-server-reports':
setting => 'reports',
value => $reports;
}
}