puppet/puppet/manifests/init.pp

263 lines
7 KiB
Puppet

# Install and configure Puppet client.
#
class puppet::client {
case $operatingsystem {
openbsd: { $vardir = "/var/puppet" }
default: { $vardir = "/var/lib/puppet" }
}
case $operatingsystem {
centos,fedora: {
package { "ruby-shadow":
ensure => installed,
}
}
}
package { "puppet":
name => $operatingsystem ? {
openbsd => "ruby-puppet",
default => "puppet",
},
ensure => present,
}
file { "/etc/puppet/puppet.conf":
ensure => present,
content => template("puppet/puppet.conf.erb"),
mode => 0600,
owner => root,
group => $operatingsystem ? {
openbsd => wheel,
default => root
},
require => Package["puppet"],
}
case $operatingsystem {
openbsd: {
service { "puppet":
ensure => running,
enable => true,
binary => "/usr/local/bin/puppetd",
start => "/usr/local/bin/puppetd",
restart => "/usr/bin/pkill -HUP -f /usr/local/bin/puppetd",
pattern => puppetd,
require => Package["puppet"],
subscribe => File["/etc/puppet/puppet.conf"],
}
}
default: {
service { "puppet":
ensure => running,
enable => true,
restart => "/usr/bin/pkill -HUP puppetd",
require => Package["puppet"],
subscribe => File["/etc/puppet/puppet.conf"],
}
}
}
file { "/usr/local/sbin/puppet-check":
ensure => present,
source => "puppet:///puppet/puppet-check",
mode => 0755,
owner => root,
group => $operatingsystem ? {
openbsd => wheel,
default => root,
},
}
cron { "puppet-check":
ensure => present,
command => "/usr/local/sbin/puppet-check",
user => root,
hour => 5,
minute => 0,
require => File["/usr/local/sbin/puppet-check"],
}
}
# Install and configure Puppet client but disable service.
#
class puppet::manual inherits puppet::client {
Service["puppet"] {
ensure => undef,
enable => false,
}
Cron["puppet-check"] {
ensure => absent,
}
}
# Install and configure Puppet server
#
# === Global variables
#
# $puppet_listenports:
# Array containing ports that puppetmaster should listen to. Defaults to
# [ "18140", "18141", "18142", "18143", ].
#
# $puppet_storeconfigs:
# Store config type to use. Valid values are "thin", "full" and "none".
# Defaults to "thin".
#
# $puppet_report_maxage:
# Maximum age (in hours) to keep reports. Defaults to 720 hours (30 days).
#
class puppet::server inherits puppet::client {
if ! $puppet_listenports {
$puppet_listenports = [ "18140", "18141", "18142", "18143", ]
}
case $puppet_storeconfigs {
"": { $puppet_storeconfigs = "thin" }
"thin","full","none": { }
default: {
fail("Invalid value ${puppet_storeconfigs} for variable \$puppet_storeconfigs.")
}
}
package { "puppet-server":
ensure => installed,
}
include mongrel
package { [ "rubygem-rails",
"rubygem-sqlite3-ruby",
"ruby-RRDtool",
"ruby-ldap", ]:
ensure => installed,
}
if $puppet_datadir {
file { "${puppet_datadir}":
ensure => directory,
mode => 0755,
owner => root,
group => root,
}
file { "/srv/puppet":
ensure => link,
target => "${puppet_datadir}",
require => File["${puppet_datadir}"],
}
} else {
file { "/srv/puppet":
ensure => directory,
mode => 0755,
owner => root,
group => root,
}
}
if $puppet_storeconfigs != "none" {
file { "/srv/puppet/storeconfigs":
ensure => directory,
mode => 0750,
owner => puppet,
group => puppet,
require => [ File["/srv/puppet"],
Package["puppet-server"], ],
}
}
file { [ "/srv/puppet/bucket",
"/srv/puppet/reports",
"/srv/puppet/rrd", ]:
ensure => directory,
mode => 0750,
owner => puppet,
group => puppet,
require => [ File["/srv/puppet"],
Package["puppet-server"], ],
}
file { "/srv/puppet/files":
ensure => directory,
mode => 0755,
owner => root,
group => root,
require => File["/srv/puppet"],
}
file { "/srv/puppet/files/common":
ensure => directory,
mode => 0755,
owner => root,
group => root,
require => File["/srv/puppet/files"],
}
file { "/srv/puppet/files/private":
ensure => directory,
mode => 0750,
owner => root,
group => puppet,
require => [ File["/srv/puppet/files"],
Package["puppet-server"], ],
}
service { "puppetmaster":
ensure => running,
enable => true,
hasstatus => true,
require => Package["puppet-server"],
subscribe => File["/etc/puppet/puppet.conf"],
}
File["/etc/puppet/puppet.conf"] {
content => template("puppet/puppet.conf.erb", "puppet/puppetmaster.conf.erb"),
}
file { "/etc/puppet/tagmail.conf":
ensure => present,
source => [ "puppet:///files/puppet/tagmail.conf.${fqdn}",
"puppet:///files/puppet/tagmail.conf",
"puppet:///puppet/tagmail.conf", ],
mode => 0644,
owner => root,
group => root,
require => Package["puppet-server"],
}
file { "/etc/puppet/fileserver.conf":
ensure => present,
source => [ "puppet:///files/puppet/fileserver.conf.${fqdn}",
"puppet:///files/puppet/fileserver.conf",
"puppet:///puppet/fileserver.conf", ],
mode => 0644,
owner => root,
group => root,
require => Package["puppet-server"],
notify => Service["puppetmaster"],
}
file { "/etc/sysconfig/puppetmaster":
ensure => present,
content => template("puppet/puppetmaster.sysconfig.erb"),
mode => 0644,
owner => root,
group => root,
notify => Service["puppetmaster"],
}
if !$puppet_report_maxage {
$puppet_report_maxage = "720"
}
file { "/etc/cron.daily/puppet-report-cleanup":
ensure => present,
content => template("puppet/puppet-report-cleanup.erb"),
mode => 0755,
owner => root,
group => root,
require => File["/srv/puppet/reports"],
}
}