refactored it all
This commit is contained in:
83
manifests/agent.pp
Normal file
83
manifests/agent.pp
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
11
manifests/environment.pp
Normal 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,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,136 +1,59 @@
|
|||||||
#import 'defines/*.pp'
|
|
||||||
|
|
||||||
class puppet (
|
class puppet (
|
||||||
$ensure = 'present',
|
$ensure = 'present',
|
||||||
$norunifloggedin = false,
|
$version = undef,
|
||||||
$daemonize = true,
|
$pupppetlabs_apt = true,
|
||||||
$run_hour = '*/1',
|
$agent = true,
|
||||||
$run_minute = '10',
|
$agent_norunifloggedin = false,
|
||||||
$run_if_ipmatch = '',
|
$agent_daemonize = true,
|
||||||
$maxsleep = '3200'
|
$agent_run_hour = '*/1',
|
||||||
) {
|
$agent_run_minute = '10',
|
||||||
$puppet_service = $::kernel ? {
|
$agent_run_if_ipmatch = '',
|
||||||
'Darwin' => 'org.macports.puppet',
|
$agent_maxsleep = '3200',
|
||||||
'FreeBSD' => 'puppetd',
|
$server = false,
|
||||||
default => 'puppet'
|
$server_dns_alt_names = undef,
|
||||||
}
|
$server_storeconfigs = false,
|
||||||
$factpath = '/var/lib/puppet/lib/facter'
|
$server_storeconfigs_backend = undef,
|
||||||
|
$server_basemodulepath = undef,
|
||||||
require 'puppet::facter'
|
$server_reports = 'store',
|
||||||
|
$server_passenger = true) {
|
||||||
if !defined(Class['puppet::puppetlabs_apt']) {
|
if $puppetlabs_apt {
|
||||||
require 'puppet::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 $_',
|
if $version != undef {
|
||||||
# "$fqdn") }
|
apt::pin { 'puppet':
|
||||||
|
version => $version,
|
||||||
case $::kernel {
|
packages => 'puppet*',
|
||||||
'Linux' : {
|
priority => '100',
|
||||||
$puppetpkgs = ['puppet', 'puppet-common']
|
|
||||||
|
|
||||||
Package {
|
|
||||||
provider => 'apt' }
|
|
||||||
if $::lsbdistid != 'Ubuntu' {
|
|
||||||
package{'ruby-msgpack': ensure => $ensure}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default : {
|
|
||||||
$puppetpkgs = 'puppet'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$puppet_linuxversion_real = $::PUPPET_VERSION_LINUX ? {
|
|
||||||
'' => 'latest',
|
|
||||||
default => $::PUPPET_VERSION_LINUX,
|
|
||||||
}
|
|
||||||
|
|
||||||
$pkg_ens = $ensure ? {
|
class { 'puppet::facter':
|
||||||
'present' => $::kernel ? {
|
|
||||||
'Linux' => $puppet_linuxversion_real,
|
|
||||||
default => $ensure,
|
|
||||||
},
|
|
||||||
default => $ensure,
|
|
||||||
}
|
|
||||||
package { $puppetpkgs:
|
|
||||||
ensure => $pkg_ens,
|
|
||||||
notify => Service[$puppet_service],
|
|
||||||
}
|
|
||||||
|
|
||||||
service { $puppet_service:
|
|
||||||
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';
|
|
||||||
}
|
|
||||||
|
|
||||||
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,
|
ensure => $ensure,
|
||||||
content => template('puppet/puppet.conf.erb'),
|
|
||||||
mode => '0644',
|
|
||||||
owner => $puppet_user,
|
|
||||||
# require => [ Package["puppet"] ],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
73
manifests/server.pp
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user