# handles puppetmasterd service class puppetmasterd { # Configuration case $puppetmaster_servertype { '': { $puppetmaster_servertype = 'mongrel' $puppetmaster_daemon_opts = '--ssl_client_header=HTTP_X_SSL_SUBJECT' } } case $puppetmaster_puppetmasters { '': { $puppetmaster_puppetmasters = '4' } } case $puppetmaster_port { '': { $puppetmaster_port = '18140' } } # use this option if you want puppet to manage the certificates for all # master nodes, useful when using multiple masters as prevents issues such as # http://groups.google.com/group/puppet-users/browse_thread/thread/f24bd7500e9091bd if $puppetmaster_manage_ca == true { include puppetmaster::ca } # warns that this node has a puppetmaster $puppetmasterd_present = true # then include puppet class include puppetd # needed packages package { "puppetmaster": ensure => installed; "sqlite3": ensure => installed; "libmysql-ruby": ensure => installed; } file { "/etc/default/puppetmaster": ensure => present, owner => root, group => root, mode => 0644, content => template('puppet/puppetmaster.erb'), notify => Service['puppetmaster'], } case $puppetmaster_servertype { 'mongrel': { include nginx::puppetmaster case defined(Package["mongrel"]) { false: { package { "mongrel": ensure => installed, } } } service { "puppetmaster": enable => true, ensure => running, hasrestart => true, require => [ Package['puppetmaster'], Package['mongrel'], Service['nginx'] ], } } default: { service { "puppetmaster": enable => true, ensure => running, hasrestart => true, require => Package['puppetmaster'], } } } # cron rule to update puppet config repository every 5 minutes cron { "puppet-update": command => "/usr/local/sbin/update-puppet-conf.sh &> /dev/null", user => puppet, minute => "*/5", ensure => present, require => [ File["/usr/local/sbin/update-puppet-conf.sh"], User["puppet"] ], } # cron rule to execute puppetlast once a week as a report cron { "puppetlast": command => "puppetlast", user => root, hour => "0", minute => "0", weekday => "0", ensure => present, } # cron rule to restart puppetmaster before restarting the nodes cron { "puppetmaster-restart": command => "/etc/init.d/puppetmaster restart &> /dev/null", user => root, hour => "*/1", minute => "0", ensure => absent, } # and the script to the cron-job above file { "/usr/local/sbin/update-puppet-conf.sh": source => "puppet://$server/modules/puppet/update-puppet-conf.sh", owner => "puppet", group => "puppet", mode => 0755, ensure => present, } # for storeconfigs include mysql::server # Database creation as suggested by # http://reductivelabs.com/trac/puppet/wiki/Recipes/MySQLStoredConfiguration #exec { "create-storeconfigs-db": # command => "/usr/bin/mysqladmin create puppet", # unless => "/usr/bin/mysqlcheck -s puppet", # notify => Exec["create-storeconfigs-user"], #} #exec { "create-storeconfigs-user": # command => "/usr/bin/mysql -e 'grant all privileges on puppet.* to puppet@localhost identified by \"puppet\"'", # refreshonly => true, #} } class puppetmasterd::disabled inherits puppetmasterd { Service["puppetmaster"] { ensure => stopped, } Cron["puppetlast"] { ensure => absent, } }