nirvdrum-rubber 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +146 -0
- data/COPYING +339 -0
- data/README +6 -0
- data/TODO +11 -0
- data/VERSION +1 -0
- data/bin/vulcanize +41 -0
- data/generators/vulcanize/USAGE +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +51 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf +10 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf +9 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf +6 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf +52 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +66 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +34 -0
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +6 -0
- data/generators/vulcanize/templates/apache/templates.yml +1 -0
- data/generators/vulcanize/templates/base/Capfile +14 -0
- data/generators/vulcanize/templates/base/config/deploy.rb +55 -0
- data/generators/vulcanize/templates/base/config/rubber/common/crontab +17 -0
- data/generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf +8 -0
- data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +14 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +84 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber-dns.yml +79 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +227 -0
- data/generators/vulcanize/templates/base/lib/tasks/rubber.rake +15 -0
- data/generators/vulcanize/templates/base/script/cron-rake +18 -0
- data/generators/vulcanize/templates/base/script/cron-runner +18 -0
- data/generators/vulcanize/templates/base/script/cron-sh +67 -0
- data/generators/vulcanize/templates/base/templates.yml +1 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf +113 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/complete_mongrel_mysql/templates.yml +6 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +21 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +10 -0
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +72 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise +40 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/my.cnf +165 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/production.rb +8 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/cruise/site_config.rb +76 -0
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +11 -0
- data/generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml +18 -0
- data/generators/vulcanize/templates/cruise/templates.yml +1 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb +45 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf +8 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +9 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf +6 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf +17 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +10 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +7 -0
- data/generators/vulcanize/templates/haproxy/templates.yml +1 -0
- data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +59 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.sh +589 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
- data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +10 -0
- data/generators/vulcanize/templates/jetty/templates.yml +1 -0
- data/generators/vulcanize/templates/memcached/config/memcached.yml +28 -0
- data/generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml +14 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf +52 -0
- data/generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached_munin_plugin +249 -0
- data/generators/vulcanize/templates/memcached/config/rubber/rubber-memcached.yml +7 -0
- data/generators/vulcanize/templates/memcached/templates.yml +1 -0
- data/generators/vulcanize/templates/minimal_mysql/templates.yml +7 -0
- data/generators/vulcanize/templates/minimal_nodb/templates.yml +6 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +75 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml +12 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +20 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +9 -0
- data/generators/vulcanize/templates/mongrel/templates.yml +1 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf +15 -0
- data/generators/vulcanize/templates/monit/config/rubber/common/monit.conf +251 -0
- data/generators/vulcanize/templates/monit/config/rubber/deploy-monit.rb +32 -0
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +10 -0
- data/generators/vulcanize/templates/monit/config/rubber/rubber-monit.yml +6 -0
- data/generators/vulcanize/templates/monit/templates.yml +1 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf +48 -0
- data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +9 -0
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +46 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +8 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf +31 -0
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin.conf +80 -0
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +8 -0
- data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +57 -0
- data/generators/vulcanize/templates/munin/script/munin/example_simple.rb +24 -0
- data/generators/vulcanize/templates/munin/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql/config/rubber/common/database.yml +11 -0
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +156 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/crontab +14 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +10 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/my.cnf +167 -0
- data/generators/vulcanize/templates/mysql/config/rubber/role/mysql_slave/mysql_slave_munin_plugin +51 -0
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +46 -0
- data/generators/vulcanize/templates/mysql/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/common/mysql_cluster_migrations.rb +13 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +173 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_data/my.cnf +15 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_mgm/ndb_mgmd.cnf +39 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/monit-mysql_cluster_sql.cnf +10 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/role/mysql_sql/my.cnf +23 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/rubber-mysql_cluster.yml +32 -0
- data/generators/vulcanize/templates/mysql_cluster/templates.yml +1 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/database.yml +16 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/monit-mysql_proxy.cnf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy +153 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.conf +10 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/common/mysql-proxy.lua +5 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/deploy-mysql_proxy.rb +52 -0
- data/generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml +11 -0
- data/generators/vulcanize/templates/mysql_proxy/templates.yml +1 -0
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +45 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab +9 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +8 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +55 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +10 -0
- data/generators/vulcanize/templates/nginx/templates.yml +1 -0
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +37 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +7 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +15 -0
- data/generators/vulcanize/templates/passenger/templates.yml +3 -0
- data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +36 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +8 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +9 -0
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +141 -0
- data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
- data/generators/vulcanize/templates/redis/templates.yml +1 -0
- data/generators/vulcanize/templates/resque/config/rubber/deploy-resque-worker-default.rb +38 -0
- data/generators/vulcanize/templates/resque/config/rubber/deploy-resque.rb +39 -0
- data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker_default/monit-resque_worker_default.conf +19 -0
- data/generators/vulcanize/templates/resque/config/rubber/rubber-resque.yml +10 -0
- data/generators/vulcanize/templates/resque/templates.yml +3 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml +46 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +112 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +11 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +10 -0
- data/generators/vulcanize/templates/sphinx/config/rubber/rubber-sphinx.yml +6 -0
- data/generators/vulcanize/templates/sphinx/templates.yml +1 -0
- data/generators/vulcanize/vulcanize_generator.rb +67 -0
- data/lib/capistrano/hostcmd.rb +12 -0
- data/lib/rubber.rb +38 -0
- data/lib/rubber/capistrano.rb +1 -0
- data/lib/rubber/cloud.rb +13 -0
- data/lib/rubber/cloud/aws.rb +334 -0
- data/lib/rubber/cloud/base.rb +16 -0
- data/lib/rubber/configuration.rb +47 -0
- data/lib/rubber/dns.rb +13 -0
- data/lib/rubber/dns/base.rb +84 -0
- data/lib/rubber/dns/dyndns.rb +78 -0
- data/lib/rubber/dns/nettica.rb +117 -0
- data/lib/rubber/dns/zerigo.rb +174 -0
- data/lib/rubber/environment.rb +169 -0
- data/lib/rubber/generator.rb +197 -0
- data/lib/rubber/instance.rb +166 -0
- data/lib/rubber/recipes/rubber.rb +89 -0
- data/lib/rubber/recipes/rubber/bundles.rb +28 -0
- data/lib/rubber/recipes/rubber/deploy.rb +90 -0
- data/lib/rubber/recipes/rubber/instances.rb +393 -0
- data/lib/rubber/recipes/rubber/load_balancers.rb +44 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +189 -0
- data/lib/rubber/recipes/rubber/setup.rb +457 -0
- data/lib/rubber/recipes/rubber/spot_requests.rb +17 -0
- data/lib/rubber/recipes/rubber/static_ips.rb +107 -0
- data/lib/rubber/recipes/rubber/utils.rb +203 -0
- data/lib/rubber/recipes/rubber/volumes.rb +264 -0
- data/lib/rubber/tasks/rubber.rb +279 -0
- data/lib/rubber/util.rb +37 -0
- data/rails/init.rb +9 -0
- data/test/environment_test.rb +133 -0
- data/test/generator_test.rb +323 -0
- data/test/instance_test.rb +93 -0
- data/test/test_helper.rb +8 -0
- data/test/util_test.rb +16 -0
- metadata +298 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# For running jobs through cron - only prints output if there is an error
|
|
4
|
+
#
|
|
5
|
+
# author mconway
|
|
6
|
+
# since 8/12/07
|
|
7
|
+
|
|
8
|
+
RAILS_ROOT = File.expand_path("..", File.dirname(__FILE__))
|
|
9
|
+
log = "#{RAILS_ROOT}/log/cron-runner-#{Time.now.tv_sec}.log"
|
|
10
|
+
begin
|
|
11
|
+
ident = File.basename(ARGV[-1]).gsub(/\W+/, "_")
|
|
12
|
+
log = "#{RAILS_ROOT}/log/cron-runner-#{ident}.log"
|
|
13
|
+
rescue
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
Dir.chdir(RAILS_ROOT)
|
|
17
|
+
args = %W{-e -l #{log} -- script/runner} + ARGV
|
|
18
|
+
system "script/cron-sh", *args
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# For running shell commands through cron - only prints output if there is an error
|
|
4
|
+
#
|
|
5
|
+
# author mconway
|
|
6
|
+
# since 8/12/07
|
|
7
|
+
|
|
8
|
+
require 'optparse'
|
|
9
|
+
require 'ostruct'
|
|
10
|
+
require 'rubygems'
|
|
11
|
+
require 'open4'
|
|
12
|
+
|
|
13
|
+
options = OpenStruct.new
|
|
14
|
+
options.logfile = "/tmp/cron-sh-#{Time.now.tv_sec}.log"
|
|
15
|
+
options.echoerr = false
|
|
16
|
+
options.echoout = false
|
|
17
|
+
|
|
18
|
+
opts = OptionParser.new do |opts|
|
|
19
|
+
opts.banner = "Usage: cron-sh [options] <shell command>"
|
|
20
|
+
opts.separator "Runs the given command, sending all stdout/stderr to a logfile, but echoing"
|
|
21
|
+
opts.separator "the entire file if the command exits with an error"
|
|
22
|
+
opts.separator ""
|
|
23
|
+
opts.separator "Specific options:"
|
|
24
|
+
|
|
25
|
+
opts.on("-l", "--log logfile", "Log to given file instead of a default") do |val|
|
|
26
|
+
options.logfile = val
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
opts.on("-o", "--[no-]echoout", "Log _and_ echo stdout") do |val|
|
|
30
|
+
options.echoout = true
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
opts.on("-e", "--[no-]echoerr", "Log _and_ echo stderr") do |val|
|
|
34
|
+
options.echoerr = true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
38
|
+
puts opts
|
|
39
|
+
exit
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
cmd = opts.parse(ARGV)
|
|
44
|
+
|
|
45
|
+
status = Open4::popen4(*cmd) do |pid, stdin, stdout, stderr|
|
|
46
|
+
File.open(options.logfile, "w") do | fh |
|
|
47
|
+
threads = []
|
|
48
|
+
threads << Thread.new(stdout) do |stdout|
|
|
49
|
+
stdout.each { |line| $stdout.puts line if options.echoout; fh.print line; fh.flush }
|
|
50
|
+
end
|
|
51
|
+
threads << Thread.new(stderr) do |stderr|
|
|
52
|
+
stderr.each { |line| $stderr.puts line if options.echoerr; fh.print line; fh.flush }
|
|
53
|
+
end
|
|
54
|
+
threads.each { |t| t.join }
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
result = status.exitstatus
|
|
59
|
+
if result != 0
|
|
60
|
+
puts ""
|
|
61
|
+
puts "*** Process exited with non-zero error code, full output follows"
|
|
62
|
+
puts "*** Command was: #{cmd.join(' ')}"
|
|
63
|
+
puts ""
|
|
64
|
+
puts IO.read(options.logfile)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
exit(result)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The core configuration needed by all others
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/haproxy/haproxy.cfg"
|
|
3
|
+
@additive = ["# start haproxy mongrel", "# end haproxy mongrel"]
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
listen mongrel_proxy 0.0.0.0:<%= rubber_env.haproxy_listen_port %>
|
|
7
|
+
<%
|
|
8
|
+
# Since we do "fair" load balancing to the mongrels, we don't want to share mongrels
|
|
9
|
+
# between haproxy instances otherwise we still end up with requests getting queued behind
|
|
10
|
+
# slow ones.
|
|
11
|
+
mongrel_hosts = rubber_instances.for_role('mongrel').collect { |i| i.name }
|
|
12
|
+
haproxy_hosts = rubber_instances.for_role('haproxy').collect { |i| i.name }
|
|
13
|
+
ports = (rubber_env.mongrel_base_port.to_i ... rubber_env.mongrel_base_port.to_i + rubber_env.mongrel_count.to_i).to_a
|
|
14
|
+
host_count = haproxy_hosts.size
|
|
15
|
+
host_mod = haproxy_hosts.sort.index(rubber_env.host) rescue 0
|
|
16
|
+
ports = ports.find_all {|x| x % host_count == host_mod}
|
|
17
|
+
%>
|
|
18
|
+
<% mongrel_hosts.each do |server| %>
|
|
19
|
+
<% ports.each do |port| %>
|
|
20
|
+
server <%= server %>_<%= port %> <%= server %>:<%= port %> maxconn 1 check
|
|
21
|
+
<% end %>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/nginx/rubber/mongrel.conf"
|
|
3
|
+
%>
|
|
4
|
+
|
|
5
|
+
upstream haproxy_mongrel
|
|
6
|
+
{
|
|
7
|
+
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
|
8
|
+
server <%= ic.name %>:<%= rubber_env.haproxy_listen_port %>;
|
|
9
|
+
<% end %>
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<% %w[http https].each do |protocol| %>
|
|
14
|
+
|
|
15
|
+
# This server is setup to serve www over <%= protocol %>.
|
|
16
|
+
server
|
|
17
|
+
{
|
|
18
|
+
<% if protocol == 'https' %>
|
|
19
|
+
listen <%= rubber_env.web_ssl_port %>;
|
|
20
|
+
ssl on;
|
|
21
|
+
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
|
22
|
+
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
|
23
|
+
# ssl_certificate <%= RUBBER_ROOT %>/config/snapmylife.com.crt;
|
|
24
|
+
# ssl_certificate_key <%= RUBBER_ROOT %>/config/snapmylife.com.key;
|
|
25
|
+
<% else %>
|
|
26
|
+
listen <%= rubber_env.web_port %>;
|
|
27
|
+
<% end %>
|
|
28
|
+
|
|
29
|
+
client_max_body_size 10M;
|
|
30
|
+
|
|
31
|
+
server_name <%= rubber_env.domain %>;
|
|
32
|
+
|
|
33
|
+
if ( $host = www.<%= rubber_env.domain %>)
|
|
34
|
+
{
|
|
35
|
+
rewrite ^\/(.*)$ http://<%= rubber_env.domain %>/$1 permanent;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
root <%= RUBBER_ROOT + "/public" %>;
|
|
39
|
+
|
|
40
|
+
# this rewrites all the requests to the maintenance.html
|
|
41
|
+
# page if it exists in the doc root. This is for capistrano's
|
|
42
|
+
# disable web task
|
|
43
|
+
if (-f $document_root/system/maintenance.html)
|
|
44
|
+
{
|
|
45
|
+
rewrite ^(.*)$ /system/maintenance.html last;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
location /
|
|
50
|
+
{
|
|
51
|
+
<%# nginx -> rails is http, so this tells rails the source protocol was https %>
|
|
52
|
+
<%= 'proxy_set_header X_FORWARDED_PROTO https;' if protocol == 'https' %>
|
|
53
|
+
|
|
54
|
+
# needed to forward user's IP address to rails
|
|
55
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
56
|
+
|
|
57
|
+
# needed for HTTPS
|
|
58
|
+
proxy_set_header Host $http_host;
|
|
59
|
+
proxy_redirect false;
|
|
60
|
+
proxy_max_temp_file_size 0;
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# If the file exists as a static file serve it directly without
|
|
64
|
+
# running all the other rewrite tests on it
|
|
65
|
+
if (-f $request_filename)
|
|
66
|
+
{
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# check for index.html for directory index
|
|
71
|
+
# if its there on the filesystem then rewite
|
|
72
|
+
# the url to add /index.html to the end of it
|
|
73
|
+
# and then break to send it to the next config rules.
|
|
74
|
+
if (-f $request_filename/index.html)
|
|
75
|
+
{
|
|
76
|
+
rewrite (.*) $1/index.html break;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# this is the meat of the rails page caching config
|
|
80
|
+
# it adds .html to the end of the url and then checks
|
|
81
|
+
# the filesystem for that file. If it exists, then we
|
|
82
|
+
# rewite the url to have explicit .html on the end
|
|
83
|
+
# and then send it on its way to the next config rule.
|
|
84
|
+
# if there is no file on the fs then it sets all the
|
|
85
|
+
# necessary headers and proxies to our upstream mongrels
|
|
86
|
+
if (-f $request_filename.html)
|
|
87
|
+
{
|
|
88
|
+
rewrite (.*) $1.html break;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (!-f $request_filename)
|
|
92
|
+
{
|
|
93
|
+
proxy_pass http://haproxy_mongrel;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# catch errors from proxy so we can display our error page
|
|
99
|
+
proxy_intercept_errors on;
|
|
100
|
+
|
|
101
|
+
error_page 500 502 503 504 /500.html;
|
|
102
|
+
location = /500.html
|
|
103
|
+
{
|
|
104
|
+
root <%= RUBBER_ROOT + "/public" %>;
|
|
105
|
+
}
|
|
106
|
+
error_page 404 /404.html;
|
|
107
|
+
location = /404.html
|
|
108
|
+
{
|
|
109
|
+
root <%= RUBBER_ROOT + "/public" %>;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
<% end %>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
role_dependencies:
|
|
3
|
+
web: [nginx, haproxy]
|
|
4
|
+
app: [mongrel]
|
|
5
|
+
web_tools: [nginx]
|
|
6
|
+
|
|
7
|
+
haproxy_listen_port: 9000
|
|
8
|
+
web_port: 80
|
|
9
|
+
web_ssl_port: 443
|
|
10
|
+
web_tools_port: 8080
|
|
11
|
+
web_tools_ssl_port: 8443
|
|
12
|
+
|
|
13
|
+
security_groups:
|
|
14
|
+
web:
|
|
15
|
+
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
16
|
+
rules:
|
|
17
|
+
- protocol: tcp
|
|
18
|
+
from_port: "#{web_port}"
|
|
19
|
+
to_port: "#{web_port}"
|
|
20
|
+
source_ips: [0.0.0.0/0]
|
|
21
|
+
- protocol: tcp
|
|
22
|
+
from_port: "#{web_ssl_port}"
|
|
23
|
+
to_port: "#{web_ssl_port}"
|
|
24
|
+
source_ips: [0.0.0.0/0]
|
|
25
|
+
web_tools:
|
|
26
|
+
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
27
|
+
rules:
|
|
28
|
+
- protocol: tcp
|
|
29
|
+
from_port: "#{web_tools_port}"
|
|
30
|
+
to_port: "#{web_tools_port}"
|
|
31
|
+
source_ips: [0.0.0.0/0]
|
|
32
|
+
- protocol: tcp
|
|
33
|
+
from_port: "#{web_tools_ssl_port}"
|
|
34
|
+
to_port: "#{web_tools_ssl_port}"
|
|
35
|
+
source_ips: [0.0.0.0/0]
|
|
36
|
+
|
|
37
|
+
roles:
|
|
38
|
+
web:
|
|
39
|
+
assigned_security_groups: [web]
|
|
40
|
+
web_tools:
|
|
41
|
+
assigned_security_groups: [web_tools]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/haproxy/haproxy.cfg"
|
|
3
|
+
@additive = ["# start haproxy passenger", "# end haproxy passenger"]
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
<%
|
|
7
|
+
backend_hosts = rubber_instances.for_role('passenger').collect { |i| i.name }
|
|
8
|
+
%>
|
|
9
|
+
|
|
10
|
+
listen passenger_proxy 0.0.0.0:<%= rubber_env.web_port %>
|
|
11
|
+
option forwardfor
|
|
12
|
+
<% backend_hosts.each do |server| %>
|
|
13
|
+
server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_port %> maxconn <%= rubber_env.max_app_connections %> check
|
|
14
|
+
<% end %>
|
|
15
|
+
|
|
16
|
+
listen passenger_proxy 0.0.0.0:<%= rubber_env.web_ssl_port %>
|
|
17
|
+
mode tcp
|
|
18
|
+
option forwardfor
|
|
19
|
+
<% backend_hosts.each do |server| %>
|
|
20
|
+
server <%= server %> <%= server %>:<%= rubber_env.passenger_listen_ssl_port %> maxconn <%= rubber_env.max_app_connections %> check
|
|
21
|
+
<% end %>
|
data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
role_dependencies:
|
|
3
|
+
web: [haproxy]
|
|
4
|
+
app: [passenger]
|
|
5
|
+
web_tools: [apache]
|
|
6
|
+
|
|
7
|
+
web_port: 80
|
|
8
|
+
web_ssl_port: 443
|
|
9
|
+
web_tools_port: 8080
|
|
10
|
+
web_tools_ssl_port: 8443
|
|
11
|
+
|
|
12
|
+
security_groups:
|
|
13
|
+
web:
|
|
14
|
+
description: "To open up port #{web_port}/#{web_ssl_port} for http server on web role"
|
|
15
|
+
rules:
|
|
16
|
+
- protocol: tcp
|
|
17
|
+
from_port: "#{web_port}"
|
|
18
|
+
to_port: "#{web_port}"
|
|
19
|
+
source_ips: [0.0.0.0/0]
|
|
20
|
+
- protocol: tcp
|
|
21
|
+
from_port: "#{web_ssl_port}"
|
|
22
|
+
to_port: "#{web_ssl_port}"
|
|
23
|
+
source_ips: [0.0.0.0/0]
|
|
24
|
+
web_tools:
|
|
25
|
+
description: "To open up port #{web_tools_port}/#{web_tools_ssl_port} for internal/tools http server"
|
|
26
|
+
rules:
|
|
27
|
+
- protocol: tcp
|
|
28
|
+
from_port: "#{web_tools_port}"
|
|
29
|
+
to_port: "#{web_tools_port}"
|
|
30
|
+
source_ips: [0.0.0.0/0]
|
|
31
|
+
- protocol: tcp
|
|
32
|
+
from_port: "#{web_tools_ssl_port}"
|
|
33
|
+
to_port: "#{web_tools_ssl_port}"
|
|
34
|
+
source_ips: [0.0.0.0/0]
|
|
35
|
+
|
|
36
|
+
roles:
|
|
37
|
+
web:
|
|
38
|
+
assigned_security_groups: [web]
|
|
39
|
+
web_tools:
|
|
40
|
+
assigned_security_groups: [web_tools]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
namespace :cruise do
|
|
4
|
+
|
|
5
|
+
rubber.allow_optional_tasks(self)
|
|
6
|
+
|
|
7
|
+
# want ssh keys to be generated before we try and print it out
|
|
8
|
+
after "custom_install_base", "rubber:cruise:custom_install"
|
|
9
|
+
|
|
10
|
+
task :custom_install, :roles => :cruise do
|
|
11
|
+
rubber.sudo_script 'install_cruise', <<-ENDSCRIPT
|
|
12
|
+
export CRUISE_HOME="#{rubber_env.cruise_dir}"
|
|
13
|
+
|
|
14
|
+
if [[ ! -d $CRUISE_HOME ]]; then
|
|
15
|
+
git clone git://github.com/sml/cruisecontrol.rb.git $CRUISE_HOME
|
|
16
|
+
fi
|
|
17
|
+
ENDSCRIPT
|
|
18
|
+
|
|
19
|
+
logger.info("\n#######################################################################\n\n")
|
|
20
|
+
logger.info("This machine needs access to your source repository for cruise control")
|
|
21
|
+
logger.info("run 'cap rubber:cruise:setup_project' once access has been granted")
|
|
22
|
+
logger.info("then run 'cap rubber:cruise:start' to start the cruise web server")
|
|
23
|
+
logger.info("ssh public key:\n#{capture('cat ~/.ssh/id_dsa.pub')}")
|
|
24
|
+
logger.info("\n#######################################################################\n\n")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
task :setup_project, :roles => :cruise do
|
|
28
|
+
rubber.sudo_script 'setup_project', <<-ENDSCRIPT
|
|
29
|
+
|
|
30
|
+
export CRUISE_HOME="#{rubber_env.cruise_dir}"
|
|
31
|
+
export CRUISE_DATA_ROOT="#{rubber_env.cruise_data_dir}"
|
|
32
|
+
export CRUISE_PROJECT_ROOT="#{rubber_env.cruise_project_dir}"
|
|
33
|
+
|
|
34
|
+
if [[ ! -d $CRUISE_HOME ]]; then
|
|
35
|
+
git clone git://github.com/sml/cruisecontrol.rb.git #{rubber_env.cruise_dir}
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
if [[ ! -d $CRUISE_PROJECT_ROOT ]]; then
|
|
39
|
+
if [[ -z "#{rubber_env.cruise_repository}" ]]; then
|
|
40
|
+
echo "cruise_repository must be set in rubber env"
|
|
41
|
+
exit 1
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
cd $CRUISE_HOME
|
|
45
|
+
echo "Adding project repository to cruise: #{rubber_env.cruise_repository}"
|
|
46
|
+
./cruise add #{rubber_env.app_name} #{rubber_env.cruise_repository}
|
|
47
|
+
mkdir -p $CRUISE_PROJECT_ROOT/log
|
|
48
|
+
cd $CRUISE_PROJECT_ROOT && rake db:create RAILS_ENV=test
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
ENDSCRIPT
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
desc "Start cruise control daemon"
|
|
56
|
+
task :start, :roles => :cruise do
|
|
57
|
+
run "/etc/init.d/cruise start"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
desc "Stop cruise control daemon"
|
|
61
|
+
task :stop, :roles => :cruise, :on_error => :continue do
|
|
62
|
+
run "/etc/init.d/cruise stop"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
desc "Restart cruise control daemon"
|
|
66
|
+
task :restart, :roles => :cruise do
|
|
67
|
+
stop
|
|
68
|
+
start
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/init.d/cruise"
|
|
3
|
+
@perms = 0755
|
|
4
|
+
%>#!/usr/bin/env ruby
|
|
5
|
+
|
|
6
|
+
require "fileutils"
|
|
7
|
+
include FileUtils
|
|
8
|
+
|
|
9
|
+
require "rubygems"
|
|
10
|
+
|
|
11
|
+
begin
|
|
12
|
+
gem 'mongrel'
|
|
13
|
+
rescue => e
|
|
14
|
+
puts "Error: daemon mode of CC.rb requires mongrel installed"
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def cruise_path
|
|
19
|
+
'<%= rubber_env.cruise_dir %>'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
command = ARGV.shift
|
|
23
|
+
|
|
24
|
+
case command
|
|
25
|
+
when 'start'
|
|
26
|
+
cd cruise_path
|
|
27
|
+
system "./cruise start -d"
|
|
28
|
+
exit 0
|
|
29
|
+
when 'stop'
|
|
30
|
+
system "mongrel_rails stop -P #{cruise_path}/tmp/pids/mongrel.pid"
|
|
31
|
+
Dir["#{cruise_path}/tmp/pids/builders/*.pid"].each do |pid_file|
|
|
32
|
+
pid = File.open(pid_file){|f| f.read }
|
|
33
|
+
system "kill -9 #{pid}"
|
|
34
|
+
rm pid_file
|
|
35
|
+
end
|
|
36
|
+
exit 0
|
|
37
|
+
else
|
|
38
|
+
p "Usage: /etc/init.d/cruise start|stop"
|
|
39
|
+
exit 1
|
|
40
|
+
end
|