Skip to content

Commit 024efa9

Browse files
author
Gary Larizza
committed
Commit puppet::master class
This class manages the puppet master installation. Included are the puppet::storeconfigs class and all associated templates.
1 parent 4ae6361 commit 024efa9

10 files changed

+263
-0
lines changed

manifests/master.pp

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# Class: puppet::master
2+
#
3+
# This class installs and configures a Puppet master
4+
#
5+
# Parameters:
6+
# * modulepath
7+
# * storeconfigs
8+
# * dbadapter
9+
# * dbuser
10+
# * dbpassword
11+
# * dbserver
12+
# * dbsocket
13+
# * certname
14+
#
15+
# Actions:
16+
#
17+
# Requires:
18+
#
19+
# Sample Usage:
20+
#
21+
# $modulepath = [
22+
# "/etc/puppet/modules/site",
23+
# "/etc/puppet/modules/dist",
24+
# ]
25+
#
26+
# class { "puppet::master":
27+
# modulepath => inline_template("<%= modulepath.join(':') %>"),
28+
# dbadapter => "mysql",
29+
# dbuser => "puppet",
30+
# dbpassword => "password"
31+
# dbsocket => "/var/run/mysqld/mysqld.sock",
32+
# }
33+
#
34+
class puppet::master (
35+
$modulepath,
36+
$storeconfigs,
37+
$storeconfigs_dbadapter,
38+
$storeconfigs_dbuser,
39+
$storeconfigs_dbpassword,
40+
$storeconfigs_dbserver,
41+
$storeconfigs_dbsocket,
42+
$certname,
43+
$puppet_master_package,
44+
$puppet_master_service,
45+
$version
46+
47+
) {
48+
49+
if $storeconfigs {
50+
51+
class { 'puppet::storeconfigs':
52+
storeconfigs_dbadapter => $storeconfigs_dbadapter,
53+
storeconfigs_dbuser => $storeconfigs_dbuser,
54+
storeconfigs_dbpassword => $storeconfigs_dbpassword,
55+
storeconfigs_dbserver => $storeconfigs_dbserver,
56+
storeconfigs_dbsocket => $storeconfigs_dbsocket,
57+
}
58+
}
59+
60+
package { $puppet_master_package:
61+
ensure => $version,
62+
}
63+
64+
file { '/etc/puppet/namespaceauth.conf':
65+
owner => root,
66+
group => root,
67+
mode => 644,
68+
source => 'puppet:///modules/puppet/namespaceauth.conf',
69+
}
70+
71+
concat::fragment { 'puppet.conf-header':
72+
order => '05',
73+
target => "/etc/puppet/puppet.conf",
74+
content => template("puppet/puppet.conf-master.erb"),
75+
before => Service[$puppet_master_service],
76+
}
77+
78+
service { $puppet_master_service:
79+
ensure => running,
80+
enable => true,
81+
hasstatus => true,
82+
require => File['/etc/puppet/puppet.conf'],
83+
#before => Service['httpd'];
84+
}
85+
86+
}
87+

manifests/storeconfigs.pp

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Class: puppet::storedconfiguration
2+
#
3+
# This class installs and configures Puppet's stored configuration capability
4+
#
5+
# Parameters:
6+
#
7+
# Actions:
8+
#
9+
# Requires:
10+
#
11+
# Sample Usage:
12+
#
13+
class puppet::storeconfigs (
14+
$storeconfigs_dbadapter,
15+
$storeconfigs_dbuser,
16+
$storeconfigs_dbpassword,
17+
$storeconfigs_dbserver,
18+
$storeconfigs_dbsocket
19+
) {
20+
21+
case $dbadapter {
22+
'sqlite3': {
23+
include puppet::storeconfig::sqlite
24+
}
25+
'mysql': {
26+
class {
27+
"puppet::storeconfigs::mysql":
28+
dbuser => $storeconfigs_dbuser,
29+
dbpassword => $storeconfigs_dbpassword,
30+
}
31+
}
32+
default: { err("targer dbadapter $storeconfigs_dbadapter not implemented") }
33+
}
34+
35+
concat::fragment { 'puppet.conf-master-storeconfig':
36+
order => '06',
37+
target => "/etc/puppet/puppet.conf",
38+
content => template("puppet/puppet.conf-master-storeconfigs.erb");
39+
}
40+
41+
}
42+

manifests/storeconfigs/mysql.pp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class puppet::storeconfigs::mysql (
2+
$storeconfigs_dbuser,
3+
$storeconfigs_dbpassword
4+
){
5+
6+
include puppet::params
7+
8+
package { $puppet::params::puppet_storeconfigs_packages:
9+
ensure => installed,
10+
}
11+
12+
package { 'mysql':
13+
ensure => installed,
14+
provider => 'gem',
15+
}
16+
17+
database{ 'puppet':
18+
ensure => present,
19+
charset => 'utf8',
20+
}
21+
22+
database_user{"$dbuser@localhost":
23+
ensure => present,
24+
password_hash => mysql_password($storeconfigs_dbpassword),
25+
require => Database['puppet'],
26+
}
27+
28+
database_grant{ 'puppet@localhost/puppet':
29+
privileges => [all],
30+
require => [ Database['puppet'], Database_user['puppet@localhost'] ],
31+
}
32+
33+
34+
}

manifests/storeconfigs/sqlite.pp

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class puppet::storeconfigs::sqlite {
2+
3+
4+
}

manifests/storedconfiguration.pp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Class: puppet::storedconfiguration
2+
#
3+
# This class installs and configures Puppet's stored configuration capability
4+
#
5+
# Parameters:
6+
#
7+
# Actions:
8+
#
9+
# Requires:
10+
#
11+
# Sample Usage:
12+
#
13+
class puppet::storedconfiguration {
14+
15+
$rails_version = '2.3.5'
16+
require rails
17+
require mysql::server
18+
require puppet::server
19+
20+
$puppet_storedconfig_password = $puppet::params::puppet_storedconfig_password
21+
22+
package { $puppet::params::puppet_storedconfig_packages:
23+
ensure => installed,
24+
}
25+
26+
package { 'mysql':
27+
ensure => installed,
28+
provider => 'gem',
29+
}
30+
31+
database{ 'puppet':
32+
ensure => present,
33+
charset => 'utf8',
34+
}
35+
36+
database_user{'puppet@localhost':
37+
ensure => present,
38+
password_hash => mysql_password($puppet_storedconfig_password),
39+
require => Database['puppet'],
40+
}
41+
42+
database_grant{ 'puppet@localhost/puppet':
43+
privileges => [all],
44+
require => [ Database['puppet'], Database_user['puppet@localhost'] ],
45+
}
46+
47+
}

templates/puppet-server.conf.erb

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
[main]
2+
server = <%= puppet_server %>
3+
modulepath = /etc/puppet/modules/dist:/etc/puppet/modules/site
4+
logdir = /var/log/puppet
5+
vardir = /var/lib/puppet
6+
ssldir = /var/lib/puppet/ssl
7+
rundir = /var/run/puppet
8+
factpath = $vardir/lib/facter
9+
pluginsync = true
10+
templatedir = $confdir/templates
11+
prerun_command = /etc/puppet/etckeeper-commit-pre
12+
postrun_command = /etc/puppet/etckeeper-commit-post
13+
14+
[agent]
15+
report = true
16+
17+
[master]
18+
dbmigrate = true
19+
facts_terminus = inventory_active_record
20+
ssl_client_header = SSL_CLIENT_S_DN
21+
ssl_client_verify_header = SSL_CLIENT_VERIFY
22+
report = true
23+
reports = store, http
24+
reporturl = http://dashboard.puppetlabs.com/reports
25+
storeconfigs = true
26+
dbadapter = mysql
27+
dbuser = puppet
28+
dbpassword = <%= puppet_storedconfig_password %>
29+
dbserver = localhost
30+
dbsocket = /var/run/mysqld/mysqld.sock
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
storeconfigs = <%= storeconfigs %>
2+
dbadapter = <%= storeconfigs_dbadapter %>
3+
dbuser = <%= storeconfigs_dbuser %>
4+
dbpassword = <%= storeconfigs_dbpassword %>
5+
dbserver = <%= storeconfigs_dbserver %>
6+
dbsocket = <%= storeconfigs_dbsocket %>
7+
dbmigrate = true

templates/puppet.conf-master.erb

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[master]
2+
modulepath = <%= modulepath %>
3+
environment = production
4+
manifest = $confdir/manifests/site.pp
5+
ssl_client_header = SSL_CLIENT_S_DN
6+
ssl_client_verify_header = SSL_CLIENT_VERIFY

tests/server.pp

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
include puppet::server

tests/storedconfigs.pp

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
$mysql_root_pw='password'
2+
$rails_version = '2.3.5'
3+
$puppet_db_user='puppet'
4+
$puppet_db_password='password'
5+
include puppet::storedconfigs

0 commit comments

Comments
 (0)