From 454516453ffecca17117934c74b661a80f8139ce Mon Sep 17 00:00:00 2001 From: Udo Waechter Date: Mon, 26 May 2014 14:56:57 +0200 Subject: [PATCH] refactored it all --- manifests/agent.pp | 83 ++++++++++++++++++ manifests/client.pp | 21 ----- manifests/environment.pp | 11 +++ manifests/init.pp | 171 +++++++++++--------------------------- manifests/puppetmaster.pp | 40 --------- manifests/server.pp | 73 ++++++++++++++++ 6 files changed, 214 insertions(+), 185 deletions(-) create mode 100644 manifests/agent.pp delete mode 100644 manifests/client.pp create mode 100644 manifests/environment.pp delete mode 100644 manifests/puppetmaster.pp create mode 100644 manifests/server.pp diff --git a/manifests/agent.pp b/manifests/agent.pp new file mode 100644 index 0000000..2e6671a --- /dev/null +++ b/manifests/agent.pp @@ -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; + } + } +} diff --git a/manifests/client.pp b/manifests/client.pp deleted file mode 100644 index a6272bb..0000000 --- a/manifests/client.pp +++ /dev/null @@ -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', - } - -} - diff --git a/manifests/environment.pp b/manifests/environment.pp new file mode 100644 index 0000000..1bbbadc --- /dev/null +++ b/manifests/environment.pp @@ -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, + } +} \ No newline at end of file diff --git a/manifests/init.pp b/manifests/init.pp index b297a37..5c22f56 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -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"] ], - } - } diff --git a/manifests/puppetmaster.pp b/manifests/puppetmaster.pp deleted file mode 100644 index 9bb8423..0000000 --- a/manifests/puppetmaster.pp +++ /dev/null @@ -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 <<| |>> -} diff --git a/manifests/server.pp b/manifests/server.pp new file mode 100644 index 0000000..d6c3861 --- /dev/null +++ b/manifests/server.pp @@ -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; + } + +}