Revision af4efdd2
Added by Greg Sutcliffe about 12 years ago
manifests/params.pp | ||
---|---|---|
class puppet::params {
|
||
|
||
# Basic config
|
||
$user = 'puppet'
|
||
$dir = '/etc/puppet'
|
||
$ca = true
|
||
$passenger = true
|
||
|
||
# use static environments or ignore the following line and enable git dynamic environments
|
||
# Set 'false' for staic environments, or 'true' for git-based workflow
|
||
$git_repo = false
|
||
|
||
# Static environments config, ignore if the git_repo is 'true'
|
||
# What environments do we have
|
||
$environments = ['development', 'production']
|
||
# where we store our puppet modules
|
||
# Where we store our puppet modules
|
||
$modules_path = "${dir}/modules"
|
||
# modules in this directory would be shared across all environments
|
||
# Modules in this directory would be shared across all environments
|
||
$common_modules_path = "${modules_path}/common"
|
||
|
||
$git_repo = false
|
||
# Dynamic environments config, ignore if the git_repo is 'false'
|
||
# Path to the repository
|
||
$git_repo_path = '/var/lib/puppet/puppet.git'
|
||
# Where to checkout the branches
|
||
$envs_dir = "${dir}/environments"
|
||
# Override these if you need your own hooks
|
||
$post_hook_content = 'puppet/server/post-receive.erb'
|
||
$post_hook_name = 'post-receive'
|
||
|
||
# Passenger config
|
||
$app_root = "${dir}/rack"
|
||
$ssl_dir = '/var/lib/puppet/ssl'
|
||
|
||
... | ... | |
default => ['puppet-server'],
|
||
}
|
||
|
||
# Run_style can be cron, daemon, or none
|
||
$run_style = 'none'
|
||
# THis only applies to cron-style
|
||
# This only applies to puppet::cron
|
||
$cron_range = 60 # the maximum value for our cron
|
||
$cron_interval = 2 # the amount of values within the $cron_range
|
||
}
|
manifests/server.pp | ||
---|---|---|
class puppet::server {
|
||
include puppet::server::install
|
||
include puppet::server::config
|
||
class puppet::server (
|
||
$user = $puppet::params::user,
|
||
$dir = $puppet::params::dir,
|
||
$ca = $puppet::params::ca,
|
||
$passenger = $puppet::params::passenger,
|
||
$environments = $puppet::params::environments,
|
||
$modules_path = $puppet::params::modules_path,
|
||
$common_modules_path = $puppet::params::common_modules_path,
|
||
$git_repo = $puppet::params::git_repo,
|
||
$git_repo_path = $puppet::params::git_repo_path,
|
||
$envs_dir = $puppet::params::envs_dir,
|
||
$app_root = $puppet::params::app_root,
|
||
$ssl_dir = $puppet::params::ssl_dir,
|
||
$master_package = $puppet::params::master_package,
|
||
$post_hook_content = $puppet::params::post_hook_content,
|
||
$post_hook_name = $puppet::params::post_hook_name
|
||
) inherits puppet::params {
|
||
class { 'puppet::server::install': }~>
|
||
class { 'puppet::server::config': }
|
||
}
|
manifests/server/config.pp | ||
---|---|---|
class puppet::server::config inherits puppet::config {
|
||
if $puppet::params::passenger { include puppet::server::passenger }
|
||
if $puppet::server::passenger { include puppet::server::passenger }
|
||
|
||
# appends our server configuration to puppet.conf
|
||
File ["${puppet::params::dir}/puppet.conf"] {
|
||
File ["${puppet::server::dir}/puppet.conf"] {
|
||
content => template('puppet/puppet.conf.erb', 'puppet/server/puppet.conf.erb'),
|
||
}
|
||
|
||
exec {'generate_ca_cert':
|
||
creates => "${puppet::params::ssl_dir}/certs/${::fqdn}.pem",
|
||
creates => "${puppet::server::ssl_dir}/certs/${::fqdn}.pem",
|
||
command => "puppetca --generate ${::fqdn}",
|
||
path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
|
||
}
|
||
|
||
if $puppet::params::git_repo {
|
||
if $puppet::server::git_repo {
|
||
|
||
# location where our puppet environments are located
|
||
file { $puppet::params::envs_dir:
|
||
file { $puppet::server::envs_dir:
|
||
ensure => directory,
|
||
owner => $puppet::params::user,
|
||
owner => $puppet::server::user,
|
||
}
|
||
|
||
# need to chown the $vardir before puppet does it, or else
|
||
... | ... | |
|
||
file { '/var/lib/puppet':
|
||
ensure => directory,
|
||
owner => $puppet::params::user,
|
||
owner => $puppet::server::user,
|
||
}
|
||
|
||
include git
|
||
|
||
git::repo { 'puppet_repo':
|
||
bare => true,
|
||
target => $puppet::params::git_repo_path,
|
||
user => $puppet::params::user,
|
||
require => File[$puppet::params::envs_dir],
|
||
target => $puppet::server::git_repo_path,
|
||
user => $puppet::server::user,
|
||
require => File[$puppet::server::envs_dir],
|
||
}
|
||
|
||
# git post hook to auto generate an environment per branch
|
||
file { "${puppet::params::git_repo_path}/hooks/post-receive":
|
||
content => template('puppet/server/post-receive.erb'),
|
||
owner => $puppet::params::user,
|
||
mode => '0555',
|
||
file { "${puppet::server::git_repo_path}/hooks/${puppet::server::post_hook_name}":
|
||
content => template("$puppet::server::post_hook_content"),
|
||
owner => $puppet::server::user,
|
||
mode => '0755',
|
||
require => Git::Repo['puppet_repo'],
|
||
}
|
||
|
||
user { $puppet::params::user:
|
||
user { $puppet::server::user:
|
||
shell => '/usr/bin/git-shell',
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
file { [$puppet::params::modules_path, $puppet::params::common_modules_path]:
|
||
file { [$puppet::server::modules_path, $puppet::server::common_modules_path]:
|
||
ensure => directory,
|
||
}
|
||
|
||
# setup empty directories for our environments
|
||
puppet::server::env {$puppet::params::environments: }
|
||
puppet::server::env {$puppet::server::environments: }
|
||
}
|
||
|
||
}
|
manifests/server/install.pp | ||
---|---|---|
class puppet::server::install {
|
||
|
||
package { $puppet::params::master_package: ensure => installed }
|
||
package { $puppet::server::master_package: ensure => installed }
|
||
|
||
}
|
Also available in: Unified diff
Make puppet::server a parameterized class
This is a drop-in replacement - running 'include puppet::server' should
behave exactly as before. In addition, you can now do things like: