Skip to content

Commit 0161f36

Browse files
committed
Make puppet module cross-platform
1 parent 0f3343d commit 0161f36

File tree

3 files changed

+97
-23
lines changed

3 files changed

+97
-23
lines changed

provision/modules/puppet/manifests/init.pp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
#
55
# === Parameters
66
#
7+
# [*ensure*]
8+
# What state the package should be in. Defaults to +latest+. Valid values are
9+
# +present+ (also called +installed+), +absent+, +purged+, +held+, +latest+,
10+
# or a specific version number.
11+
#
712
# === Actions
813
#
914
# - Install Puppet client package
@@ -15,16 +20,30 @@
1520
#
1621
# class { 'puppet': }
1722
#
18-
class puppet {
23+
# class { 'puppet':
24+
# ensure => '2.6.8-0.5.el5',
25+
# }
26+
#
27+
class puppet(
28+
$ensure = $puppet::params::client_ensure
29+
) inherits puppet::params {
1930

2031
package { 'puppet':
21-
ensure => latest,
32+
ensure => $ensure,
33+
}
34+
35+
# required to start client agent on ubuntu
36+
exec { 'start_puppet':
37+
command => '/bin/sed -i /etc/default/puppet -e "s/START=no/START=yes/"',
38+
onlyif => '/usr/bin/test -f /etc/default/puppet',
39+
require => Package[ 'puppet' ],
40+
before => Service[ 'puppet' ],
2241
}
2342

2443
service { 'puppet':
2544
enable => true,
2645
ensure => running,
27-
require => Package['puppet'],
46+
require => Package[ 'puppet' ],
2847
}
2948

3049
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# == Class: puppet::params
2+
#
3+
# This class manages the Puppet parameters.
4+
#
5+
# === Parameters
6+
#
7+
# === Actions
8+
#
9+
# === Requires
10+
#
11+
# === Sample Usage
12+
#
13+
# This class file is not called directly.
14+
#
15+
class puppet::params {
16+
17+
$client_ensure = 'latest'
18+
$server_ensure = 'latest'
19+
20+
case $::operatingsystem {
21+
'centos', 'fedora', 'redhat', 'scientific': {
22+
$server_package_name = 'puppet-server'
23+
}
24+
'debian', 'ubuntu': {
25+
$server_package_name = 'puppetmaster'
26+
}
27+
default: {
28+
fail("Module 'puppet' is not currently supported by Puppet Sandbox on ${::operatingsystem}")
29+
}
30+
}
31+
32+
}

provision/modules/puppet/manifests/server.pp

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,47 @@
44
#
55
# === Parameters
66
#
7+
# [*ensure*]
8+
# What state the package should be in. Defaults to +latest+. Valid values are
9+
# +present+ (also called +installed+), +absent+, +purged+, +held+, +latest+,
10+
# or a specific version number.
11+
#
12+
# [*package_name*]
13+
# The name of the package on the relevant distribution. Default is set by
14+
# Class['puppet::params'].
15+
#
716
# === Actions
817
#
918
# - Install Puppet server package
10-
# - Ensure puppet-master daemon is running
11-
# - Configure Puppet to use nodes.pp and modules from /vagrant directory
1219
# - Configure Puppet to autosign puppet client certificate requests
20+
# - Configure Puppet to use nodes.pp and modules from /vagrant directory
21+
# - Ensure puppet-master daemon is running
1322
#
1423
# === Requires
1524
#
1625
# === Sample Usage
1726
#
1827
# class { 'puppet::server': }
1928
#
20-
class puppet::server {
29+
# class { 'puppet::server':
30+
# ensure => '2.6.8-0.5.el5',
31+
# }
32+
#
33+
class puppet::server(
34+
$ensure = $puppet::params::server_ensure,
35+
$package_name = $puppet::params::server_package_name
36+
) inherits puppet::params {
2137

22-
package { 'puppet-server':
23-
ensure => latest,
38+
# required to prevent syslog error on ubuntu
39+
# https://bugs.launchpad.net/ubuntu/+source/puppet/+bug/564861
40+
file { [ '/etc/puppet', '/etc/puppet/files' ]:
41+
ensure => directory,
42+
before => Package[ 'puppetmaster' ],
43+
}
44+
45+
package { 'puppetmaster':
46+
ensure => $ensure,
47+
name => $package_name,
2448
}
2549

2650
file { 'puppet.conf':
@@ -29,8 +53,8 @@
2953
group => 'puppet',
3054
mode => '0644',
3155
source => 'puppet:///modules/puppet/puppet.conf',
32-
require => Package[ 'puppet-server' ],
33-
notify => Service[ 'puppet-server' ],
56+
require => Package[ 'puppetmaster' ],
57+
notify => Service[ 'puppetmaster' ],
3458
}
3559

3660
file { 'site.pp':
@@ -39,35 +63,34 @@
3963
group => 'puppet',
4064
mode => '0644',
4165
source => 'puppet:///modules/puppet/site.pp',
42-
require => Package[ 'puppet-server' ],
66+
require => Package[ 'puppetmaster' ],
67+
}
68+
69+
file { 'autosign.conf':
70+
path => '/etc/puppet/autosign.conf',
71+
owner => 'puppet',
72+
group => 'puppet',
73+
mode => '0644',
74+
content => '*',
75+
require => Package[ 'puppetmaster' ],
4376
}
4477

4578
file { '/etc/puppet/manifests/nodes.pp':
4679
ensure => link,
4780
target => '/vagrant/nodes.pp',
81+
require => Package[ 'puppetmaster' ],
4882
}
4983

5084
# initialize a template file then ignore
5185
file { '/vagrant/nodes.pp':
5286
ensure => present,
5387
replace => false,
5488
source => 'puppet:///modules/puppet/nodes.pp',
55-
require => Package[ 'puppet-server' ],
56-
}
57-
58-
file { 'autosign.conf':
59-
path => '/etc/puppet/autosign.conf',
60-
owner => 'puppet',
61-
group => 'puppet',
62-
mode => '0644',
63-
content => '*',
64-
require => Package[ 'puppet-server' ],
6589
}
6690

67-
service { 'puppet-server':
91+
service { 'puppetmaster':
6892
enable => true,
6993
ensure => running,
70-
name => 'puppetmaster',
7194
}
7295

7396
}

0 commit comments

Comments
 (0)