Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
683f366
Add support for gem provider
Jul 29, 2011
405cee8
Fixed dependecy issue with gem provider addition
Jul 29, 2011
e4f7558
Simplify storeconfigs manifest
Jul 29, 2011
a1307f7
Add more params and set more defaults
Jul 29, 2011
b795f3a
Document external module dependencies
Jul 29, 2011
4d1b850
Avoid resource duplication.
Jul 29, 2011
403af71
Documentation - init.pp
Aug 15, 2011
dfffe33
Parameters for init.pp
Aug 15, 2011
ab63d0c
Remove _real variables
Aug 15, 2011
8788846
Documentation for master.pp
Aug 15, 2011
fd12775
Remove unnecessary master.pp parameters
Aug 15, 2011
b96f43e
Implement Passenger with Puppet Master
Aug 15, 2011
692801f
Implement Dashboard Class Parameters
Aug 15, 2011
17281ae
Declare concat::setup
Aug 15, 2011
299ca79
Repair Certificate Check
Aug 16, 2011
4342f09
Declare puppet.conf with concat
Aug 16, 2011
1d322c7
Check for package declaration
Aug 16, 2011
c57bfba
Change agent package name
Aug 16, 2011
328417c
Documentation for group_id and user_id
Aug 16, 2011
61a1ffb
Declare puppet user and group
Aug 16, 2011
d57e2cd
Defaults storeconfigs to false
Aug 16, 2011
96ed893
Pass puppet_vardir to master class
Aug 16, 2011
8647b83
Pass parameters to agent class
Aug 16, 2011
2fd4574
Set /etc/puppet permissions
Aug 16, 2011
362a854
Remove certname fact
Aug 16, 2011
87c8572
Manage /etc/puppet
Aug 16, 2011
1e574c0
Declare puppet master package
Aug 16, 2011
d95123c
Use exec to start/stop puppet master service
Aug 16, 2011
1cef093
Rename and order puppet master concat fragment
Aug 16, 2011
20546fe
Manage $vardir
Aug 16, 2011
7c1f9ae
Add necessary parameter defaults to params class
Aug 16, 2011
0ba432c
Fix parameter names
Aug 16, 2011
93eb0e3
Typo on storeconfigs class
Aug 16, 2011
ae90ca4
Declare activerecord
Aug 16, 2011
2f89b3b
Convert tabs to spaces in templates
Aug 16, 2011
b3d9ad7
Remove extra space in puppet.conf-master.erb
Aug 16, 2011
431e633
Ensure concat::fragment['puppet.conf-common']
Aug 16, 2011
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions files/config.ru
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# a config.ru, for use with every rack-compatible webserver.
# SSL needs to be handled outside this, though.

# if puppet is not in your RUBYLIB:
# $:.unshift('/opt/puppet/lib')

$0 = "master"

# if you want debugging:
# ARGV << "--debug"

ARGV << "--rack"
require 'puppet/application/master'
# we're usually running inside a Rack::Builder.new {} block,
# therefore we need to call run *here*.
run Puppet::Application[:master].run
7 changes: 0 additions & 7 deletions lib/facter/certname.rb

This file was deleted.

66 changes: 48 additions & 18 deletions manifests/agent.pp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
$puppet_agent_name,
$puppet_conf,
$puppet_server,
$package_provider = undef,
$version
) inherits puppet::params {

Expand All @@ -28,30 +29,59 @@
}
}

package { 'puppet':
name => $puppet_agent_name,
ensure => $version,
if ! defined(Package[$puppet_agent_name]) {
package { $puppet_agent_name:
ensure => $version,
provider => $package_provider,
}
}

if $package_provider == 'gem' {
$service_notify = Exec['puppet_agent_start']

exec { 'puppet_agent_start':
command => '/usr/bin/nohup puppet agent &',
refresh => '/usr/bin/pkill puppet && /usr/bin/nohup puppet agent &',
unless => "/bin/ps -ef | grep -v grep | /bin/grep 'puppet agent'",
require => File['/etc/puppet/puppet.conf'],
subscribe => Package[$puppet_agent_name],
}
} else {
$service_notify = Service[$puppet_agent_service]

service { $puppet_agent_service:
ensure => running,
enable => true,
hasstatus => true,
require => File['/etc/puppet/puppet.conf'],
subscribe => Package[$puppet_agent_name],
#before => Service['httpd'];
}
}

service { "puppet_agent":
name => "$puppet_agent_service",
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
subscribe => Concat[$puppet_conf],
if defined(File['/etc/puppet']) {
File ['/etc/puppet'] {
require +> Package[$puppet_agent_name],
notify +> $service_notify
}
}

if ! defined(Concat[$puppet_conf]) {
concat { $puppet_conf:
mode => '0644',
require => Package['puppet'],
notify => $puppet::agent::service_notify,
}
} else {
Concat<| title == $puppet_conf |> {
require => Package['puppet'],
notify +> $puppet::agent::service_notify,
}
}

concat::fragment { 'puppet.conf-common':
order => '00',
target => $puppet_conf,
content => template("puppet/puppet.conf-common.erb"),
}

concat { $puppet_conf:
mode => '0644',
require => Package['puppet'],
notify => Service['puppet_agent'],
}

}
}
227 changes: 147 additions & 80 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,65 @@
#
# Parameters:
#
# [*version*] - The value of the ensure parameter for the
# puppet master and agent packages
# [*master*] - Boolean determining whether the the puppet
# master service should be setup
# [*agent*] - Boolean determining whether the puppet agent
# should be setup
# [*confdir*] - The confdir configuration value in puppet.conf
# [*manifest*] - The manifest configuration value in puppet.conf
# [*certname*] - The certname configuration value in puppet.conf
# [*autosign*] - The autosign configuration value in puppet.conf
# [*puppet_server*] - The server configuration value in puppet.conf
# [*modulepath*] - The modulepath configuration value used in
# puppet.conf
# [*puppet_conf*] - The path to the puppet.conf file
# [*puppet_logdir*] - The path to the puppet log
# [*puppet_vardir*] - The path to the puppet vardir
# [*puppet_defaults*] - The path to your distro's puppet defaults file
# [*puppet_master_service*] - The name of the puppet master service
# [*puppet_agent_service*] - The name of the puppet agent service
# [*puppet_passenger*] - Boolean value to determine whether puppet is
# to be run with Passenger
# [*puppet_site*] - The VirtualHost value used in the apache vhost
# configuration file when Passenger is enabled
# [*puppet_passenger_port*] - The port on which puppet is listening when
# Passenger is enabled
# [*puppet_docroot*] - The DocumentRoot value used in the apache vhost
# configuration file when Passenger is enabled
# [*storeconfigs*] - Boolean determining whether storeconfigs is
# to be enabled.
# [*storeconfigs_dbadapter*] - The database adapter to use with storeconfigs
# [*storeconfigs_dbuser*] - The database username used with storeconfigs
# [*storeconfigs_dbpassword*] - The database password used with storeconfigs
# [*storeconfigs_dbserver*] - Fqdn of the storeconfigs database server
# [*storeconfigs_dbsocket*] - The path to the mysql socket file
# [*install_mysql_pkgs*] - Boolean determining whether mysql and related
# devel packages should be installed.
# [*puppet_master_package*] - The name of the puppet master package
# [*package_provider*] - The provider used for package installation
# [*user_id*] - The UID of the puppet user
# [*group_id*] - The GID of the puppet group
# [*dashboard*] - Boolean determining whether the puppet
# dashboard is to be enabled
# [*dashboard_ensure*] - The value of the ensure parameter for the
# puppet dashboard package
# [*dashboard_user*] - Name of the puppet-dashboard database and
# system user
# [*dashboard_group*] - Name of the puppet-dashboard group
# [*dashbaord_password*] - Password for the puppet-dashboard database use
# [*dashboard_db*] - The puppet-dashboard database name
# [*dashboard_charset*] - Character set for the puppet-dashboard database
# [*dashboard_site*] - The ServerName setting for Apache
# [*dashboard_port*] - The port on which puppet-dashboard should run
# [*dashboard_passenger*] - Boolean to determine whether Dashboard is to be
# used with Passenger
# [*dashboard_mysql_provider*] - The package provider to use when installing
# the ruby-mysql package
# [*dashboard_mysql_pkg*] - The package name used for installing the
# ruby-mysql package
#
# Actions:
#
# Requires:
Expand All @@ -22,114 +81,122 @@
$version = 'present',
$master = false,
$agent = true,
$dashboard = false,
$confdir = $puppet::params::confdir,
$manifest = $puppet::params::manifest,
$modulepath = $puppet::params::modulepath,
$puppet_conf = $puppet::params::puppet_conf,
$puppet_logdir = $puppet::params::puppet_logdir,
$puppet_vardir = $puppet::params::puppet_vardir,
$puppet_ssldir = $puppet::params::puppet_ssldir,
$puppet_defaults = $puppet::params::puppet_defaults,
$puppet_master_service = $puppet::params::puppet_master_service,
$puppet_agent_service = $puppet::params::puppet_agent_service,
$puppet_agent_name = $puppet::params::puppet_agent_name,
$puppet_server = $puppet::params::puppet_server,
$storeconfigs = $puppet::params::storeconfigs,
$puppet_passenger = false,
$puppet_site = $puppet::params::puppet_site,
$puppet_passenger_port = $puppet::params::puppet_passenger_port,
$puppet_docroot = $puppet::params::puppet_docroot,
$storeconfigs = false,
$storeconfigs_dbadapter = $puppet::params::storeconfigs_dbadapter,
$storeconfigs_dbuser = $puppet::params::storeconfigs_dbuser,
$storeconfigs_dbpassword = $puppet::params::storeconfigs_dbpassword,
$storeconfigs_dbserver = $puppet::params::storeconfigs_dbserver,
$storeconfigs_dbsocket = $puppet::params::storeconfigs_dbsocket,
$certname = $puppet::params::certname,
$install_mysql_pkgs = false,
$autosign = false,
$puppet_master_package = $puppet::params::puppet_master_package,
$modulepath = $puppet::params::modulepath,
$dashboard_version = undef,
$dashboard_site = undef,
$package_provider = undef,
$user_id = undef,
$group_id = undef,
$dashboard = false,
$dashboard_ensure = undef,
$dashboard_user = undef,
$dashboard_password = undef
$dashboard_group = undef,
$dashboard_password = undef,
$dashboard_db = undef,
$dashboard_charset = undef,
$dashboard_site = undef,
$dashboard_port = undef,
$dashboard_passenger = undef,
$dashboard_mysql_provider = undef,
$dashboard_mysql_pkg = undef

) inherits puppet::params {

$v_bool = [ '^true$', '^false$' ]
$v_alphanum = '^[._0-9a-zA-Z:-]+$'
$v_path = '^/'
validate_re($version, $v_alphanum)
validate_re("$master", $v_bool)
validate_re("$agent", $v_bool)
validate_re("$dashboard", $v_bool)
validate_re("$storeconfigs", $v_bool)
validate_re($puppet_conf, $v_path)
validate_re($puppet_logdir, $v_path)
validate_re($puppet_vardir, $v_path)
validate_re($puppet_ssldir, $v_path)
validate_re($puppet_defaults, $v_path)
validate_re($puppet_master_service, $v_alphanum)
validate_re($puppet_agent_service, $v_alphanum)
validate_re($puppet_agent_name, $v_alphanum)
validate_re($puppet_server, $v_alphanum)
validate_re($storeconfigs_dbadapter,$v_alphanum)
validate_re($storeconfigs_dbuser, $v_alphanum)
validate_re($storeconfigs_dbpassword, $v_alphanum)
validate_re($storeconfigs_dbsocket, $v_path)
validate_re($storeconfigs_dbserver, $v_alphanum)
validate_re($certname, $v_alphanum)
validate_re($modulepath, $v_path)

$version_real = $version
$master_real = $master
$agent_real = $agent
$dashboard_real = $dashboard
$puppet_conf_real = $puppet_conf
$puppet_logdir_real = $puppetlogdir
$puppet_vardir_real = $puppet_vardir
$puppet_ssldir_real = $puppet_ssldir
$puppet_defaults_real = $puppet_defaults
$puppet_master_service_real = $puppet_master_service
$puppet_agent_service_real = $puppet_agent_service
$puppet_agent_name_real = $puppet_agent_name
$puppet_server_real = $puppet_server
$storeconfigs_dbadapter_real = $storeconfigs_dbadapter
$storeconfigs_dbuser_real = $storeconfigs_dbuser
$storeconfigs_dbpassword_real = $storeconfigs_dbpassword
$storeconfigs_dbsocket_real = $storeconfigs_dbsocket
$storeconfigs_dbserver_real = $storeconfigs_dbserver
$storeconfigs_real = $storeconfigs
$certname_real = $certname
$puppet_master_package_real = $puppet_master_package
$modulepath_real = $modulepath

if $dashboard_real {

if $dashboard {
class {'dashboard':
dashboard_version => $dashboard_version,
dashboard_site => $dashboard_site,
dashboard_user => $dashboard_user,
dashboard_password => $dashboard_password,
dashboard_ensure => $dashboard_version,
dashboard_group => $dashboard_group,
dashboard_db => $dashboard_db,
dashboard_charset => $dashboard_charset,
dashboard_site => $dashboard_site,
dashboard_port => $dashboard_port,
passenger => $dashboard_passenger,
mysql_package_provider => $dashboard_mysql_provider,
ruby_mysql_package => $dashboard_mysql_pkg,
dashboard_user => $dashboard_user,
dashboard_password => $dashboard_password,
}
}

if $master_real {
if $master {
class {'puppet::master':
version => $version_real,
modulepath => $modulepath_real,
storeconfigs => $storeconfigs_real,
storeconfigs_dbadapter => $storeconfigs_dbadapter_real,
storeconfigs_dbuser => $storeconfigs_dbuser_real,
storeconfigs_dbpassword => $storeconfigs_dbpassword_real,
storeconfigs_dbserver => $storeconfigs_dbserver_real,
storeconfigs_dbsocket => $storeconfigs_dbsocket_real,
certname => $certname_real,
puppet_master_service => $puppet_master_service_real,
puppet_master_package => $puppet_master_package_real,
version => $version,
confdir => $confdir,
puppet_passenger => $puppet_passenger,
puppet_site => $puppet_site,
puppet_passenger_port => $puppet_passenger_port,
puppet_docroot => $puppet_docroot,
puppet_vardir => $puppet_vardir,
modulepath => $modulepath,
storeconfigs => $storeconfigs,
storeconfigs_dbadapter => $storeconfigs_dbadapter,
storeconfigs_dbuser => $storeconfigs_dbuser,
storeconfigs_dbpassword => $storeconfigs_dbpassword,
storeconfigs_dbserver => $storeconfigs_dbserver,
storeconfigs_dbsocket => $storeconfigs_dbsocket,
install_mysql_pkgs => $install_mysql_pkgs,
certname => $certname,
autosign => $autosign,
manifest => $manifest,
puppet_master_service => $puppet_master_service,
puppet_master_package => $puppet_master_package,
package_provider => $package_provider,
dashboard_port => $dashboard_port,
}
}

if $agent_real {
if $agent {
class {'puppet::agent':
version => $version_real,
puppet_defaults => $puppet_defaults_real,
puppet_agent_service => $puppet_agent_service_real,
puppet_agent_name => $puppet_agent_name_real,
puppet_server => $puppet_server_real,
puppet_conf => $puppet_conf_real,
version => $version,
puppet_defaults => $puppet_defaults,
puppet_agent_service => $puppet_agent_service,
puppet_server => $puppet_server,
puppet_conf => $puppet_conf,
puppet_agent_name => $puppet_agent_name,
package_provider => $package_provider,
}
}

user { 'puppet':
ensure => present,
uid => $user_id,
gid => 'puppet',
}

group { 'puppet':
ensure => present,
gid => $group_id,
}

if ! defined(File['/etc/puppet']) {
file { '/etc/puppet':
ensure => directory,
group => 'puppet',
owner => 'puppet',
recurse => true,
recurselimit => '1',
}
}

Expand Down
Loading