From 105978c2d5b04a210ff4035cfc57f8d5d550b78a Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Wed, 18 Apr 2012 12:53:12 +0300 Subject: [PATCH] Added support for deploying puppetmaster using webrick --- puppet/README.CentOS | 5 ++- puppet/bootstrap-standalone.sh | 45 ++++++++++++++++++++ puppet/manifests/init.pp | 51 +++++++++++++++++++++++ puppet/templates/puppetmaster.default.erb | 4 ++ 4 files changed, 103 insertions(+), 2 deletions(-) create mode 100755 puppet/bootstrap-standalone.sh diff --git a/puppet/README.CentOS b/puppet/README.CentOS index e600d9b..9a73436 100644 --- a/puppet/README.CentOS +++ b/puppet/README.CentOS @@ -1,6 +1,7 @@ Installing the required gems on CentOS 6: -yum install ruby ruby-devel rubygems sqlite sqlite-devel +yum install gcc make ruby ruby-devel rubygems sqlite sqlite-devel gem install --no-rdoc --no-ri rubygems-update && update_rubygems -gem install --no-rdoc --no-ri mongrel sqlite3 +gem install --no-rdoc --no-ri mongrel +gem install --no-rdoc --no-ri sqlite3 gem install --no-rdoc --no-ri rails -v 2.3.14 diff --git a/puppet/bootstrap-standalone.sh b/puppet/bootstrap-standalone.sh new file mode 100755 index 0000000..2302c37 --- /dev/null +++ b/puppet/bootstrap-standalone.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +hostname -f | fgrep "." > /dev/null +if [ $? -ne 0 ]; then + echo "error, command 'hostname -f' does not return domainname" 1>&2 + exit 1 +fi + +which ruby > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "error, ruby binary not in path" 1>&2 + exit 1 +fi + +which puppet > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "error, puppet binary not in path" 1>&2 + exit 1 +fi + +if [ -s /etc/puppet/puppet.conf ]; then + mv /etc/puppet/puppet.conf /etc/puppet/puppet.conf.orig +fi + +FQDN="$(hostname -f)" + +mkdir -p /etc/puppet/manifests/node + +cat > /etc/puppet/manifests/site.pp << EOF +import "node/*.pp" + +\$puppet_server = "${FQDN}" +EOF + +cat > /etc/puppet/manifests/node/${FQDN}.pp << EOF +node "${FQDN}" { + + include puppet::server::webrick + include puppet::manual + +} +EOF + +puppet cert --keylength 4096 --list +puppet apply --no-report /etc/puppet/manifests/site.pp diff --git a/puppet/manifests/init.pp b/puppet/manifests/init.pp index 2710c87..8d988ee 100644 --- a/puppet/manifests/init.pp +++ b/puppet/manifests/init.pp @@ -421,6 +421,57 @@ class puppet::server::common inherits puppet::client { } +# Install and configure Puppet server using webrick. +# +# === Global variables +# +# $puppet_listenports: +# Array containing ports that puppetmaster should listen to. Defaults to +# [ "8140" ]. +# +class puppet::server::webrick { + + require puppet::server::common + + if ! $puppet_listenports { + $puppet_listenports = [ "8140" ] + } + + service { "puppetmaster": + ensure => running, + enable => true, + hasstatus => true, + subscribe => File["/etc/puppet/fileserver.conf", + "/etc/puppet/puppet.conf"], + require => Package["puppetmaster"], + } + + case $operatingsystem { + debian,ubuntu: { + file { "/etc/default/puppetmaster": + ensure => present, + content => template("puppet/puppetmaster.default.erb"), + mode => "0644", + owner => "root", + group => "root", + notify => Service["puppetmaster"], + } + } + default: { + file { "/etc/sysconfig/puppetmaster": + ensure => present, + content => template("puppet/puppetmaster.sysconfig.erb"), + mode => "0644", + owner => "root", + group => "root", + notify => Service["puppetmaster"], + } + } + } + +} + + # Install and configure Puppet server using mongrel. # # === Global variables diff --git a/puppet/templates/puppetmaster.default.erb b/puppet/templates/puppetmaster.default.erb index 50ad45f..27d8f52 100644 --- a/puppet/templates/puppetmaster.default.erb +++ b/puppet/templates/puppetmaster.default.erb @@ -15,7 +15,11 @@ DAEMON_OPTS="" # mongrel. Requires front-end web-proxy such as # apache, nginx, or pound) # See: http://reductivelabs.com/trac/puppet/wiki/UsingMongrel +<% if puppet_listenports.length > 1 -%> SERVERTYPE=mongrel +<% else -%> +SERVERTYPE=webrick +<% end -%> # How many puppetmaster instances to start? Its pointless to set this # higher than 1 if you are not using mongrel.