additional module support, common things I use everywhere

This commit is contained in:
John Bintz 2012-01-30 20:28:30 -05:00
parent 7ee98959d6
commit 74e3fd9db1
7 changed files with 149 additions and 2 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
.bundle .bundle
Gemfile.lock Gemfile.lock
pkg/* pkg/*
.DS_Store

View File

@ -16,6 +16,7 @@ Capistrano::Configuration.instance.load do
_cset(:base_dir) { '/usr/local' } _cset(:base_dir) { '/usr/local' }
_cset(:rename_server) { true } _cset(:rename_server) { true }
_cset(:use_sudo) { true } _cset(:use_sudo) { true }
_cset(:additional_modules) { [] }
@dir_made = false @dir_made = false
@ -83,7 +84,11 @@ Capistrano::Configuration.instance.load do
task :copy_shared do task :copy_shared do
top.ensure_puppet_dir top.ensure_puppet_dir
top.upload PuppetStandaloneMashup::BASE.join('shared').to_s, File.join(puppet_dir, 'shared') run "mkdir -p #{puppet_dir}/shared/additional-modules"
(%w{lib modules} + additional_modules.collect { |dir| "additional-modules/#{dir}" }).each do |dir|
top.upload PuppetStandaloneMashup::BASE.join('shared', dir).to_s, File.join(puppet_dir, 'shared', dir)
end
end end
desc "Ensure Puppet target dir exists" desc "Ensure Puppet target dir exists"

View File

@ -0,0 +1,34 @@
class god {
gem { 'god':
path => "${ruby::path}:${base::path}",
ensure => present,
require => Make_and_install['ruby']
}
$god_bin = "${base::install_path}/ruby/bin/god"
$god_dir = "${base::config_path}/god.d"
$pid_path = pid_path($name)
file { '/etc/init.d/god':
content => template('god/god-init.d'),
mode => 755
}
file { $god_dir:
ensure => directory
}
update_rc_d_defaults { $name:
require => File['/etc/init.d/god']
}
running_service { $name:
require => Update_rc_d_defaults[$name]
}
file { '/usr/local/sbin/resurrect':
content => template('god/resurrect'),
mode => 755
}
}

View File

@ -0,0 +1,76 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: god
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: God
### END INIT INFO
PATH=/usr/local/ruby/bin:<%= scope.lookupvar('base::path') %>
NAME=god
DESC=god
set -e
# Make sure the binary and the config file are present before proceeding
test -x <%= god_bin %> || exit 0
. /lib/lsb/init-functions
RETVAL=0
PID_PATH=<%= pid_path %>
start() {
echo -n "Starting $DESC: "
rm -f $PID_PATH
<%= god_bin %> -P $PID_PATH -l /var/log/god.log
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
sleep 2
if [ -d <%= god_dir %> ]; then
for file in $(find <%= god_dir %> -name "*.god"); do
echo "god: loading $file ..."
<%= god_bin %> load $file
done
fi
fi
echo "$NAME."
return $RETVAL
}
stop() {
echo -n "Stopping $DESC: "
kill `cat $PID_PATH`
RETVAL=$?
echo "$NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
<%= god_bin %> status
RETVAL=$?
;;
*)
echo "Usage: god {start|stop|restart|status}"
exit 1
;;
esac
exit $RETVAL

View File

@ -0,0 +1,8 @@
#!/bin/sh
sudo killall god
sudo killall nginx
sudo killall thin
sudo killall php5-fpm
sudo service god start

View File

@ -0,0 +1,23 @@
class ruby($version) {
$path = bin_path($name)
$with_ruby_path = "${path}:${base::path}"
build_and_install { $name:
version => $version,
source => "http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-<%= version %>.tar.gz",
require => Class['base']
}
gem { 'bundler':
require => Build_and_install[$name],
path => $with_ruby_path,
ensure => present
}
bash_rc_d { $name:
ensure => present,
path => $base::local_path,
require => Build_and_install[$name]
}
}

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
mkdir -p ~/.puppet mkdir -p ~/.puppet
<%= use_sudo ? "sudo env" : "" %> RUBYLIB="${PWD}/shared/lib" <%= with_additional_puppet_bin_path %> puppet apply --confdir=$PWD --modulepath=$PWD/modules:$PWD/shared/modules --templatedir=$PWD/templates -v $@ manifests/site.pp <%= use_sudo ? "sudo env" : "" %> RUBYLIB="${PWD}/shared/lib" <%= with_additional_puppet_bin_path %> puppet apply --confdir=$PWD --modulepath=$PWD/modules:$PWD/shared/modules:$PWD/shared/additional-modules --templatedir=$PWD/templates -v $@ manifests/site.pp