263 lines
7 KiB
Puppet
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"],
|
|
}
|
|
|
|
}
|