Skip to content

Instantly share code, notes, and snippets.

@GregSutcliffe
Created June 15, 2012 15:20
Show Gist options
  • Save GregSutcliffe/2936982 to your computer and use it in GitHub Desktop.
Save GregSutcliffe/2936982 to your computer and use it in GitHub Desktop.
# Wrapper class to handle the parameterized classes needed
# by our infrastructure.
class puppetserver {
# 1st is prod server, 'default' is the dev server
case $::fqdn {
'puppetserver.office.etvinteractive.com': {
# Initialize the gitolite repo and puppet server
class { '::gitolite':
authfile => 'puppet:///modules/puppetserver/gitolite/production.conf',
keydir => 'puppet:///modules/puppetserver/gitolite/keydir',
}->
class { '::puppet::server':
port => 23545,
agent_template => 'puppetagent/puppet.conf.core.erb',
master_template => 'puppetserver/puppet.conf.master.erb',
git_repo => true,
git_repo_path => '/var/lib/gitolite/repositories/puppet.git',
post_hook_name => 'post-receive.puppet',
}
}
default: {
class { '::gitolite':
authfile => 'puppet:///modules/puppetserver/gitolite/development.conf',
keydir => 'puppet:///modules/puppetserver/gitolite/keydir',
}->
class { '::puppet::server':
agent_template => 'puppetagent/puppet.conf.core.erb',
git_repo => true,
git_repo_path => '/var/lib/gitolite/repositories/puppet.git',
post_hook_name => 'post-receive.puppet',
}
}
}
# Ensure gitolite can check out the code as 'puppet'
include sudo
sudo::directive { "gitolite":
ensure => present,
content => "gitolite ALL=(puppet) NOPASSWD: ALL
Defaults !env_reset\n",
}
# Need rbot for notifies
package { 'rbot': ensure => present }
# Puppet repo hooks
# Define the 'main' hook that runs the others specified in gitolite
file { "${puppet::server::git_repo_path}/hooks/post-receive":
content => template("puppetserver/post-hook.multi"),
mode => 0755,
}
# IRC hook
file { "${puppet::server::git_repo_path}/hooks/post-receive.irc":
content => template("puppetserver/post-hook.irc"),
mode => 0755,
}
# Manifest repo hooks
file { "${::gitolite::base}/repositories/manifests.git/hooks/post-receive":
content => template("puppetserver/post-hook.multi"),
mode => 0755,
}
file { "${::gitolite::base}/repositories/manifests.git/hooks/post-receive.puppet":
content => template("puppetserver/post-hook.manifests"),
mode => 0755,
}
file { "${::gitolite::base}/repositories/manifests.git/hooks/post-receive.irc":
content => template("puppetserver/post-hook.irc"),
mode => 0755,
}
# Hiera config
package { ["libmysql-ruby","libactiverecord-ruby1.8"]: ensure => installed }
package { "hiera":
ensure => installed,
provider => 'gem',
}
file { "/etc/puppet/hiera.yaml":
content => template("puppetserver/hiera.yaml")
}
# Tagmail config
file { "/etc/puppet/tagmail.conf":
ensure => "present",
content => "!blah: gsutcliffe@ibahn.com
dev: pcairns@ibahn.com",
}
# Stuff to be refactored later
file {
["/etc/puppet/bin","/etc/puppet/extdata"]:
ensure => directory,
recurse => true,
mode => 775,
owner => puppet,
group => puppet;
"/etc/puppet/extdata-git":
ensure => directory,
recurse => false,
mode => 775,
owner => puppet,
group => puppet;
"/etc/puppet/fileserver.conf":
ensure => present,
mode => 755,
source => "puppet:///modules/puppetserver/fileserver.conf";
"/etc/puppet/bin/external_node":
ensure => present,
mode => 755,
require => File["/etc/puppet/bin"],
source => "puppet:///modules/puppetserver/external_node";
"/etc/puppet/bin/kill_node_in_storeconfigs_db.rb":
ensure => present,
mode => 755,
require => File["/etc/puppet/bin"],
source => "puppet:///modules/puppetserver/kill_node_in_storeconfigs_db.rb";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment