--- /dev/null
+# manage puppet package
+class puppet::base(
+ $start_on_boot = false
+) {
+ include puppet
+
+ case $ensure {
+ '': {
+ $daemon_ensure = $::lsbdistcodename ? {
+ 'squeeze' => 'latest',
+ default => installed,
+ }
+ }
+ }
+
+ package { "puppet":
+ ensure => $daemon_ensure,
+ }
+
+ file { "/etc/default/puppet":
+ source => "puppet:///modules/puppet/puppet",
+ owner => "root",
+ group => "root",
+ mode => 0644,
+ ensure => present,
+ }
+
+}
+# manage puppet service
class puppet::daemon(
$master = false,
$ensure = hiera('puppet::daemon::ensure', ''),
$configtimeout = hiera('puppet::daemon::configtimeout', "120"),
$server = hiera('puppet::daemon::server', "puppet.${::domain}")
) {
- include puppet
-
- case $ensure {
- '': {
- $daemon_ensure = $::lsbdistcodename ? {
- 'squeeze' => 'latest',
- default => installed,
- }
- }
- }
-
- package { "puppet":
- ensure => $daemon_ensure,
- require => Package["cron"],
+ class { "puppet::base":
+ start_on_boot => true
}
- file { "/etc/default/puppet":
- source => "puppet:///modules/puppet/puppet",
- owner => "root",
- group => "root",
- mode => 0644,
- ensure => present,
- notify => Service["puppet"],
+ package { "cron":
+ ensure => installed,
}
service { "puppet":
-class puppet::master::update(
- $ensure = present,
- $method = hiera('puppet::master::update::method', 'cron')
-) {
+# manage a git repo that updates /etc/puppet
+class puppet::repo {
+ include puppet
+
# make sure we have a puppet repo
exec { "make-puppet-repo":
command => "/bin/sh -c 'mkdir -p /var/git/repositories/puppet.git && cd /var/git/repositories/puppet.git && git --bare init'",
require => [ User['gitolite'], File['/var/git/repositories'] ],
}
- # puppet update script
- file { "/usr/local/sbin/update-puppet-conf.sh":
- source => "puppet:///modules/puppet/update-puppet-conf.sh",
- owner => "puppet",
- group => "puppet",
- mode => 0750,
- ensure => present,
- }
-
- # cron rule to update puppet config repository every 5 minutes
- cron { "puppet-update":
- command => "/usr/local/sbin/update-puppet-conf.sh > /dev/null 2>&1",
- user => puppet,
- minute => "*/5",
- ensure => $method ? {
- 'cron' => $ensure,
- default => absent,
- },
- require => [ File["/usr/local/sbin/update-puppet-conf.sh"], User["puppet"] ],
- }
-
# use a post-update hook
file { '/var/git/repositories/puppet.git/hooks/post-update':
mode => 0750,
}
}
}
+
+class puppet::repo::update(
+ $ensure = present,
+ $method = hiera('puppet::update::method', 'cron')
+) {
+ include puppet::repo
+
+ # puppet update script
+ file { "/usr/local/sbin/update-puppet-conf.sh":
+ source => "puppet:///modules/puppet/update-puppet-conf.sh",
+ owner => "puppet",
+ group => "puppet",
+ mode => 0750,
+ ensure => present,
+ }
+
+ # cron rule to update puppet config repository every 5 minutes
+ cron { "puppet-update":
+ command => "/usr/local/sbin/update-puppet-conf.sh > /dev/null 2>&1",
+ user => puppet,
+ minute => "*/5",
+ ensure => $method ? {
+ 'cron' => $ensure,
+ default => absent,
+ },
+ require => [ File["/usr/local/sbin/update-puppet-conf.sh"], User["puppet"] ],
+ }
+
+}
--- /dev/null
+# manage a puppet standalone installation with no agent
+class puppet::standalone {
+
+ include puppet::base # agent will not start on boot by default
+ include puppet::repo
+
+ service { "puppet":
+ enable => false,
+ ensure => stopped,
+ hasrestart => true,
+ require => [ Package["puppet"], File["/etc/default/puppet"] ],
+ }
+}