From 2f2e3b6fca2d9c3080e85f531e576f83b791a692 Mon Sep 17 00:00:00 2001 From: drebs Date: Tue, 12 Aug 2014 16:10:52 -0300 Subject: Add standalone class. --- files/puppet | 2 +- manifests/base.pp | 28 ++++++++++++++++++ manifests/daemon.pp | 26 ++++------------ manifests/master.pp | 2 +- manifests/master/update.pp | 66 ----------------------------------------- manifests/repo.pp | 74 ++++++++++++++++++++++++++++++++++++++++++++++ manifests/standalone.pp | 13 ++++++++ 7 files changed, 122 insertions(+), 89 deletions(-) create mode 100644 manifests/base.pp delete mode 100644 manifests/master/update.pp create mode 100644 manifests/repo.pp create mode 100644 manifests/standalone.pp diff --git a/files/puppet b/files/puppet index d9f5fd4..3b85c50 100644 --- a/files/puppet +++ b/files/puppet @@ -1,7 +1,7 @@ # Defaults for puppet - sourced by /etc/init.d/puppet # Start puppet on boot? -START=yes +START= # Startup options DAEMON_OPTS="" diff --git a/manifests/base.pp b/manifests/base.pp new file mode 100644 index 0000000..299ecc6 --- /dev/null +++ b/manifests/base.pp @@ -0,0 +1,28 @@ +# 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, + } + +} diff --git a/manifests/daemon.pp b/manifests/daemon.pp index c8a5b1e..59d83ba 100644 --- a/manifests/daemon.pp +++ b/manifests/daemon.pp @@ -1,3 +1,4 @@ +# manage puppet service class puppet::daemon( $master = false, $ensure = hiera('puppet::daemon::ensure', ''), @@ -6,29 +7,12 @@ class puppet::daemon( $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": diff --git a/manifests/master.pp b/manifests/master.pp index 94727d1..cd9852a 100644 --- a/manifests/master.pp +++ b/manifests/master.pp @@ -115,7 +115,7 @@ class puppet::master( } # update config - class { 'puppet::master::update': + class { 'puppet::repo::update': ensure => $main ? { true => present, default => absent, diff --git a/manifests/master/update.pp b/manifests/master/update.pp deleted file mode 100644 index 4c7a42c..0000000 --- a/manifests/master/update.pp +++ /dev/null @@ -1,66 +0,0 @@ -class puppet::master::update( - $ensure = present, - $method = hiera('puppet::master::update::method', 'cron') -) { - # 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'", - unless => "/bin/sh -c '[ -e /var/git/repositories/puppet.git ]'", - user => gitolite, - 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, - owner => gitolite, - group => gitolite, - ensure => $method ? { - 'cron' => $ensure, - default => present, - }, - source => "puppet:///modules/puppet/post-update.sh", - require => Exec['make-puppet-repo'], - } - - # sudo configuration for the post-update hook - file { '/etc/sudoers.d/puppet-update': - owner => root, - group => root, - mode => 0440, - ensure => $method ? { - 'cron' => $ensure, - default => present, - }, - source => "puppet:///modules/puppet/sudoers", - require => Package['sudo'], - } - - # needed by the post-update hook above - if !defined(Package['procmail']) { - package { 'procmail': - ensure => present, - } - } -} diff --git a/manifests/repo.pp b/manifests/repo.pp new file mode 100644 index 0000000..1623a3c --- /dev/null +++ b/manifests/repo.pp @@ -0,0 +1,74 @@ +# 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'", + unless => "/bin/sh -c '[ -e /var/git/repositories/puppet.git ]'", + user => gitolite, + require => [ User['gitolite'], File['/var/git/repositories'] ], + } + + # use a post-update hook + file { '/var/git/repositories/puppet.git/hooks/post-update': + mode => 0750, + owner => gitolite, + group => gitolite, + ensure => $method ? { + 'cron' => $ensure, + default => present, + }, + source => "puppet:///modules/puppet/post-update.sh", + require => Exec['make-puppet-repo'], + } + + # sudo configuration for the post-update hook + file { '/etc/sudoers.d/puppet-update': + owner => root, + group => root, + mode => 0440, + ensure => $method ? { + 'cron' => $ensure, + default => present, + }, + source => "puppet:///modules/puppet/sudoers", + require => Package['sudo'], + } + + # needed by the post-update hook above + if !defined(Package['procmail']) { + package { 'procmail': + ensure => present, + } + } +} + +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"] ], + } + +} diff --git a/manifests/standalone.pp b/manifests/standalone.pp new file mode 100644 index 0000000..342fbe4 --- /dev/null +++ b/manifests/standalone.pp @@ -0,0 +1,13 @@ +# 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"] ], + } +} -- cgit v1.2.3