sml-rubber 0.9.9 → 0.9.10
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/VERSION +1 -1
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +13 -7
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/deflate.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/expires.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/headers.conf +0 -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/{web → apache}/setenvif.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web_tools/index.html → apache/config/rubber/role/web_tools/tools-index.html} +8 -1
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +4 -12
- data/generators/vulcanize/templates/base/config/deploy.rb +5 -34
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +4 -6
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -3
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web/nginx.conf → complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf} +25 -45
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/{complete_mysql → complete_mongrel_mysql}/templates.yml +0 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +3 -1
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +8 -10
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -5
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +7 -7
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml +4 -4
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf +2 -2
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +2 -2
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +17 -1
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +14 -36
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +8 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +7 -7
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +6 -6
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/crontab +0 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/monit-nginx.conf +0 -1
- 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 +43 -62
- 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 +3 -26
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +13 -40
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -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 +9 -11
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +1 -1
- data/lib/rubber/cloud/aws.rb +30 -0
- data/lib/rubber/instance.rb +53 -2
- data/lib/rubber/recipes/rubber.rb +7 -6
- data/lib/rubber/recipes/rubber/deploy.rb +22 -1
- data/lib/rubber/recipes/rubber/instances.rb +74 -24
- data/lib/rubber/recipes/rubber/load_balancers.rb +27 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +5 -7
- data/lib/rubber/recipes/rubber/setup.rb +50 -14
- data/lib/rubber/recipes/rubber/static_ips.rb +7 -7
- data/lib/rubber/recipes/rubber/utils.rb +6 -7
- data/lib/rubber/recipes/rubber/volumes.rb +8 -8
- data/lib/rubber/util.rb +4 -0
- data/test/instance_test.rb +55 -0
- metadata +32 -18
- data/generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf +0 -27
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf +0 -44
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf +0 -8
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/vhost.conf +0 -29
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.10
|
|
@@ -4,14 +4,20 @@ namespace :rubber do
|
|
|
4
4
|
namespace :apache do
|
|
5
5
|
|
|
6
6
|
rubber.allow_optional_tasks(self)
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
after "rubber:install_packages", "rubber:apache:custom_install"
|
|
9
|
+
|
|
10
|
+
task :custom_install, :roles => :apache do
|
|
11
|
+
sudo "a2dissite default"
|
|
12
|
+
end
|
|
13
|
+
|
|
8
14
|
# serial_task can only be called after roles defined - not normally a problem, but
|
|
9
15
|
# rubber auto-roles don't get defined till after all tasks are defined
|
|
10
16
|
on :load do
|
|
11
|
-
rubber.serial_task self, :serial_restart, :roles => :
|
|
17
|
+
rubber.serial_task self, :serial_restart, :roles => :apache do
|
|
12
18
|
run "/etc/init.d/apache2 restart"
|
|
13
19
|
end
|
|
14
|
-
rubber.serial_task self, :serial_reload, :roles => :
|
|
20
|
+
rubber.serial_task self, :serial_reload, :roles => :apache do
|
|
15
21
|
run "if ! ps ax | grep -v grep | grep -c apache2 &> /dev/null; then /etc/init.d/apache2 start; else /etc/init.d/apache2 reload; fi"
|
|
16
22
|
end
|
|
17
23
|
end
|
|
@@ -21,22 +27,22 @@ namespace :rubber do
|
|
|
21
27
|
after "deploy:restart", "rubber:apache:reload"
|
|
22
28
|
|
|
23
29
|
desc "Stops the apache web server"
|
|
24
|
-
task :stop, :roles => :
|
|
30
|
+
task :stop, :roles => :apache, :on_error => :continue do
|
|
25
31
|
run "/etc/init.d/apache2 stop"
|
|
26
32
|
end
|
|
27
33
|
|
|
28
34
|
desc "Starts the apache web server"
|
|
29
|
-
task :start, :roles => :
|
|
35
|
+
task :start, :roles => :apache do
|
|
30
36
|
run "/etc/init.d/apache2 start"
|
|
31
37
|
end
|
|
32
38
|
|
|
33
39
|
desc "Restarts the apache web server"
|
|
34
|
-
task :restart, :roles => :
|
|
40
|
+
task :restart, :roles => :apache do
|
|
35
41
|
serial_restart
|
|
36
42
|
end
|
|
37
43
|
|
|
38
44
|
desc "Reloads the apache web server"
|
|
39
|
-
task :reload, :roles => :
|
|
45
|
+
task :reload, :roles => :apache do
|
|
40
46
|
serial_reload
|
|
41
47
|
end
|
|
42
48
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = '/etc/monit/monit.d/monit-apache.conf'
|
|
3
|
+
%>
|
|
4
|
+
<% PIDFILE = "/var/run/apache2.pid" %>
|
|
5
|
+
check process apache with pidfile <%= PIDFILE %>
|
|
6
|
+
group apache-<%= RUBBER_ENV %>
|
|
7
|
+
start program = "/etc/init.d/apache2 start"
|
|
8
|
+
stop program = "/etc/init.d/apache2 stop"
|
|
File without changes
|
data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/apache2/sites-available/#{rubber_env.app_name}-tools"
|
|
3
|
+
@post = "a2enmod rewrite && a2enmod ssl && a2enmod proxy_http && a2enmod proxy_html && a2ensite #{rubber_env.app_name}-tools"
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
Listen <%= rubber_env.web_tools_port %>
|
|
7
|
+
<VirtualHost *:<%= rubber_env.web_tools_port %>>
|
|
8
|
+
ServerName <%= rubber_env.full_host %>
|
|
9
|
+
|
|
10
|
+
RewriteEngine on
|
|
11
|
+
RewriteCond %{HTTPS} !=on
|
|
12
|
+
RewriteRule ^/(.*)$ https://%{SERVER_NAME}:<%= rubber_env.web_tools_ssl_port %>/$1 [L,R]
|
|
13
|
+
RewriteLog "/var/log/apache2/rewrite.log"
|
|
14
|
+
</VirtualHost>
|
|
15
|
+
|
|
16
|
+
Listen <%= rubber_env.web_tools_ssl_port %>
|
|
17
|
+
<VirtualHost *:<%= rubber_env.web_tools_ssl_port %>>
|
|
18
|
+
ServerName <%= rubber_env.full_host %>
|
|
19
|
+
DocumentRoot /var/www
|
|
20
|
+
|
|
21
|
+
SSLEngine on
|
|
22
|
+
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
|
|
23
|
+
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
|
|
24
|
+
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
|
|
25
|
+
# SSLCertificateFile <%= RUBBER_ROOT %>/config/<%= rubber_env.domain %>.crt
|
|
26
|
+
# SSLCertificateKeyFile <%= RUBBER_ROOT %>/config/<%= rubber_env.domain %>.key
|
|
27
|
+
# SSLCertificateChainFile /etc/ssl/certs/gd_intermediate_bundle.crt
|
|
28
|
+
|
|
29
|
+
<Location />
|
|
30
|
+
AuthType Basic
|
|
31
|
+
AuthName "Rubber Admin Tools"
|
|
32
|
+
AuthUserFile <%= RUBBER_ROOT %>/config/<%= rubber_env.app_name %>.auth
|
|
33
|
+
Require valid-user
|
|
34
|
+
|
|
35
|
+
Allow from all
|
|
36
|
+
</Location>
|
|
37
|
+
|
|
38
|
+
SetOutputFilter proxy-html
|
|
39
|
+
|
|
40
|
+
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
|
41
|
+
ProxyPass /haproxy_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/haproxy/
|
|
42
|
+
ProxyPassReverse /haproxy_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/haproxy/
|
|
43
|
+
ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.haproxy_admin_port %>/ /haproxy_<%= ic.name %>/
|
|
44
|
+
ProxyHTMLURLMap /haproxy/ /haproxy_<%= ic.name %>/
|
|
45
|
+
ProxyHTMLURLMap /haproxy /haproxy_<%= ic.name %>/
|
|
46
|
+
<% end %>
|
|
47
|
+
|
|
48
|
+
<% if cruise_host = rubber_instances.for_role('cruise').first %>
|
|
49
|
+
ProxyPass /cruise/ http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/
|
|
50
|
+
ProxyPassReverse /cruise/ http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/
|
|
51
|
+
ProxyHTMLURLMap http://<%= cruise_host.full_name %>:<%= rubber_env.cruise_port %>/ /cruise/
|
|
52
|
+
ProxyHTMLURLMap / /cruise/
|
|
53
|
+
<% end %>
|
|
54
|
+
|
|
55
|
+
<% rubber_instances.each do |ic| %>
|
|
56
|
+
ProxyPass /monit_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/
|
|
57
|
+
ProxyPassReverse /monit_<%= ic.name %>/ http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/
|
|
58
|
+
ProxyHTMLURLMap http://<%= ic.full_name %>:<%= rubber_env.monit_admin_port %>/ /monit_<%= ic.name %>/
|
|
59
|
+
ProxyHTMLURLMap / /monit_<%= ic.name %>/
|
|
60
|
+
<% end %>
|
|
61
|
+
|
|
62
|
+
</VirtualHost>
|
|
@@ -10,14 +10,21 @@
|
|
|
10
10
|
<body>
|
|
11
11
|
<h1>Rubber Admin Tools</h1>
|
|
12
12
|
<ul>
|
|
13
|
+
|
|
13
14
|
<li><a href="/munin/">Munin</a></li>
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
<% if cruise_host = rubber_instances.for_role('cruise').first %>
|
|
17
|
+
<li><a href="http://<%= cruise_host %>/cruise/">CruiseControl</a></li>
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
15
20
|
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
|
16
21
|
<li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
|
|
17
22
|
<% end %>
|
|
23
|
+
|
|
18
24
|
<% rubber_instances.each do |ic| %>
|
|
19
25
|
<li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
|
|
20
26
|
<% end %>
|
|
27
|
+
|
|
21
28
|
</ul>
|
|
22
29
|
</body>
|
|
23
30
|
</html>
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
web_aliases: [www.foo.com *.foo.com]
|
|
2
|
-
|
|
3
|
-
security_groups:
|
|
4
|
-
web:
|
|
5
|
-
description: To open up port 80 for http server on web role
|
|
6
|
-
rules:
|
|
7
|
-
- protocol: tcp
|
|
8
|
-
from_port: 80
|
|
9
|
-
to_port: 80
|
|
10
|
-
source_ips: [0.0.0.0/0]
|
|
11
1
|
|
|
12
2
|
roles:
|
|
13
|
-
|
|
3
|
+
apache:
|
|
14
4
|
packages: [apache2]
|
|
15
|
-
|
|
5
|
+
roles:
|
|
6
|
+
web_tools:
|
|
7
|
+
packages: [libapache2-mod-proxy-html]
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
set :rails_env, RUBBER_ENV
|
|
4
4
|
|
|
5
5
|
on :load do
|
|
6
|
-
set :application,
|
|
7
|
-
set :
|
|
6
|
+
set :application, rubber_env.app_name
|
|
7
|
+
set :runner, rubber_env.app_user
|
|
8
|
+
set :deploy_to, "/mnt/#{application}-#{RUBBER_ENV}"
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
# Use a simple directory tree copy here to make demo easier.
|
|
@@ -20,8 +21,7 @@ set :password, nil
|
|
|
20
21
|
|
|
21
22
|
# Use sudo with user rails for cap deploy:[stop|start|restart]
|
|
22
23
|
# This way exposed services (mongrel) aren't running as a privileged user
|
|
23
|
-
set :use_sudo,
|
|
24
|
-
set :runner, 'rails'
|
|
24
|
+
set :use_sudo, true
|
|
25
25
|
|
|
26
26
|
# How many old releases should be kept around when running "cleanup" task
|
|
27
27
|
set :keep_releases, 3
|
|
@@ -47,38 +47,9 @@ namespace :deploy do
|
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
#
|
|
51
|
-
# TASKS
|
|
52
|
-
# =============================================================================
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
# load in the deploy scripts installed by vulcanize for each rubber module
|
|
55
51
|
Dir["#{File.dirname(__FILE__)}/rubber/deploy-*.rb"].each do |deploy_file|
|
|
56
52
|
load deploy_file
|
|
57
53
|
end
|
|
58
54
|
|
|
59
|
-
# Don't want to do rubber:config for update_code as that tree isn't official
|
|
60
|
-
# until it is 'committed' by the symlink task (and doing so causes it to run
|
|
61
|
-
# for bootstrap_db which should only config the db config file). However,
|
|
62
|
-
# deploy:migrations doesn't call update, so we need an additional trigger for
|
|
63
|
-
# it
|
|
64
|
-
after "deploy:update", "rubber:config"
|
|
65
|
-
after "deploy:rollback_code", "rubber:config"
|
|
66
|
-
before "deploy:migrate", "rubber:config"
|
|
67
|
-
|
|
68
|
-
before "rubber:pre_start", "setup_perms"
|
|
69
|
-
before "rubber:pre_restart", "setup_perms"
|
|
70
55
|
after "deploy", "deploy:cleanup"
|
|
71
|
-
|
|
72
|
-
# Fix perms because we start server as rails user, but migrate as root,
|
|
73
|
-
# server needs to be able to write logs, etc.
|
|
74
|
-
task :setup_perms do
|
|
75
|
-
run "find #{shared_path} -name cached-copy -prune -o -print | xargs chown #{runner}:#{runner}"
|
|
76
|
-
run "chown -R #{runner}:#{runner} #{current_path}/tmp"
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Uncomment this is you want to install gems defined in the rails environment.rb
|
|
80
|
-
# after "deploy:update", "install_rails_gems"
|
|
81
|
-
task :install_rails_gems do
|
|
82
|
-
sudo "sh -c 'cd #{current_path} && RAILS_ENV=#{RUBBER_ENV} rake gems:install'"
|
|
83
|
-
end
|
|
84
|
-
|
|
@@ -10,7 +10,7 @@ namespace :rubber do
|
|
|
10
10
|
# figure out which hosts we have specified enterprise ruby for
|
|
11
11
|
sys_ruby_hosts = []
|
|
12
12
|
ent_ruby_hosts = []
|
|
13
|
-
|
|
13
|
+
rubber_instances.filtered.each do |ic|
|
|
14
14
|
env = rubber_cfg.environment.bind(ic.role_names, ic.name)
|
|
15
15
|
if env.use_enterprise_ruby
|
|
16
16
|
ent_ruby_hosts << ic.full_name
|
|
@@ -54,13 +54,12 @@ namespace :rubber do
|
|
|
54
54
|
src_url = "http://rubyforge.org/frs/download.php/60718/rubygems-#{ver}.tgz"
|
|
55
55
|
rubber.sudo_script 'install_rubygems', <<-ENDSCRIPT
|
|
56
56
|
if [[ `gem --version 2>&1` != "#{ver}" ]]; then
|
|
57
|
-
wget -
|
|
57
|
+
wget -qNP /tmp #{src_url}
|
|
58
58
|
tar -C /tmp -xzf /tmp/rubygems-#{ver}.tgz
|
|
59
59
|
ruby -C /tmp/rubygems-#{ver} setup.rb
|
|
60
60
|
ln -sf /usr/bin/gem1.8 /usr/bin/gem
|
|
61
61
|
rm -rf /tmp/rubygems*
|
|
62
62
|
gem source -l > /dev/null
|
|
63
|
-
gem sources -a http://gems.github.com
|
|
64
63
|
fi
|
|
65
64
|
ENDSCRIPT
|
|
66
65
|
end
|
|
@@ -93,9 +92,8 @@ namespace :rubber do
|
|
|
93
92
|
after "rubber:install_packages", "rubber:base:custom_install"
|
|
94
93
|
task :custom_install do
|
|
95
94
|
rubber.sudo_script 'custom_install', <<-ENDSCRIPT
|
|
96
|
-
# add the
|
|
97
|
-
|
|
98
|
-
if ! id ${appuser} &> /dev/null; then adduser --system --group ${appuser}; fi
|
|
95
|
+
# add the user for running app server with
|
|
96
|
+
if ! id #{rubber_env.app_user} &> /dev/null; then adduser --system --group #{rubber_env.app_user}; fi
|
|
99
97
|
|
|
100
98
|
# add ssh keys for root
|
|
101
99
|
if [[ ! -f /root/.ssh/id_dsa ]]; then ssh-keygen -q -t dsa -N '' -f /root/.ssh/id_dsa; fi
|
|
@@ -11,12 +11,20 @@
|
|
|
11
11
|
# packages: [awstats]
|
|
12
12
|
|
|
13
13
|
# REQUIRED: The name of your application
|
|
14
|
-
app_name:
|
|
14
|
+
app_name: "#{File.basename(RUBBER_ROOT)}"
|
|
15
|
+
|
|
16
|
+
# REQUIRED: The system user to run your app servers as
|
|
17
|
+
app_user: app
|
|
15
18
|
|
|
16
19
|
# REQUIRED: Notification emails (e.g. monit) get sent to this address
|
|
17
20
|
#
|
|
18
21
|
admin_email: root@localhost
|
|
19
22
|
|
|
23
|
+
# OPTIONAL: If not set, you won't be able to access web_tools
|
|
24
|
+
# server (munin stats, monit status, etc)
|
|
25
|
+
# web_tools_user: admin
|
|
26
|
+
# web_tools_password: sekret
|
|
27
|
+
|
|
20
28
|
# REQUIRED: The timezone the server should be in
|
|
21
29
|
timezone: US/Eastern
|
|
22
30
|
|
|
@@ -127,13 +135,31 @@ auto_security_groups: true
|
|
|
127
135
|
# account, or even multiple apps
|
|
128
136
|
isolate_security_groups: true
|
|
129
137
|
|
|
138
|
+
# OPTIONAL: Automatically provision and assign instances to a Cloud provided
|
|
139
|
+
# load balancer.
|
|
140
|
+
load_balancers:
|
|
141
|
+
my_lb_name:
|
|
142
|
+
listeners:
|
|
143
|
+
- protocol: http
|
|
144
|
+
port: 80
|
|
145
|
+
instance_port: 8080
|
|
146
|
+
- protocol: tcp
|
|
147
|
+
port: 443
|
|
148
|
+
instance_port: 8080
|
|
149
|
+
target_roles: [app]
|
|
150
|
+
|
|
151
|
+
isolate_load_balancers: true
|
|
152
|
+
|
|
130
153
|
# OPTIONAL: Set if you want to use Ruby Enterprise Edition instead of the standard ubuntu one
|
|
131
154
|
use_enterprise_ruby: false
|
|
132
155
|
|
|
133
156
|
# OPTIONAL: The packages to install on all instances
|
|
134
157
|
# You can install a specific version of a package by using a sub-array of pkg, version
|
|
135
158
|
# For example, packages: [[rake, 0.7.1], irb]
|
|
136
|
-
packages: [build-essential, ruby-full, ruby1.8-dev, rake, irb]
|
|
159
|
+
packages: [postfix, build-essential, ruby-full, ruby1.8-dev, rake, irb]
|
|
160
|
+
|
|
161
|
+
# OPTIONAL: gem sources to setup for rubygems
|
|
162
|
+
gemsources: ["http://gems.rubyforge.org/", "http://gems.github.com"]
|
|
137
163
|
|
|
138
164
|
# OPTIONAL: The gems to install on all instances
|
|
139
165
|
# You can install a specific version of a gem by using a sub-array of gem, version
|
|
@@ -151,7 +177,7 @@ stop_on_error_cmd: "function error_exit { exit 99; }; trap error_exit ERR"
|
|
|
151
177
|
# but this is not always desired for staging, so you can specify a different
|
|
152
178
|
# set here
|
|
153
179
|
#
|
|
154
|
-
staging_roles: "web,
|
|
180
|
+
staging_roles: "web,app,db:primary=true"
|
|
155
181
|
|
|
156
182
|
|
|
157
183
|
# OPTIONAL: Lets one assign amazon elastic IPs (static IPs) to your instances
|
|
@@ -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
|
+
|
|
@@ -1,55 +1,31 @@
|
|
|
1
1
|
<%
|
|
2
|
-
@path = "/etc/nginx/
|
|
3
|
-
@post = "mkdir -p /mnt/nginx/logs"
|
|
2
|
+
@path = "/etc/nginx/rubber/mongrel.conf"
|
|
4
3
|
%>
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
worker_processes 10;
|
|
8
|
-
|
|
9
|
-
pid /var/run/nginx.pid;
|
|
10
|
-
|
|
11
|
-
events
|
|
5
|
+
upstream haproxy_mongrel
|
|
12
6
|
{
|
|
13
|
-
|
|
7
|
+
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
|
8
|
+
server <%= ic.name %>:<%= rubber_env.haproxy_listen_port %>;
|
|
9
|
+
<% end %>
|
|
14
10
|
}
|
|
15
11
|
|
|
16
|
-
http
|
|
17
|
-
{
|
|
18
|
-
include /etc/nginx/mime.types;
|
|
19
|
-
default_type application/octet-stream;
|
|
20
|
-
|
|
21
|
-
sendfile on;
|
|
22
|
-
tcp_nopush on;
|
|
23
|
-
tcp_nodelay off;
|
|
24
|
-
|
|
25
|
-
gzip on;
|
|
26
|
-
gzip_http_version 1.0;
|
|
27
|
-
gzip_comp_level 2;
|
|
28
|
-
gzip_proxied any;
|
|
29
|
-
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
|
30
|
-
|
|
31
|
-
# configure log format like to Apache's "combined" log format
|
|
32
|
-
log_format main
|
|
33
|
-
'$remote_addr - $remote_user [$time_local] '
|
|
34
|
-
'"$request" $status $body_bytes_sent "$http_referer" '
|
|
35
|
-
'"$http_user_agent" "$http_cookie"';
|
|
36
|
-
|
|
37
|
-
# default log files
|
|
38
|
-
error_log /mnt/nginx/logs/error.log notice;
|
|
39
|
-
access_log /mnt/nginx/logs/access.log main;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
upstream mongrel
|
|
43
|
-
{
|
|
44
|
-
<% proxy_hosts = rubber_instances.for_role('haproxy').each do |ic| %>
|
|
45
|
-
server <%= ic.name %>:<%= rubber_env.haproxy_listen_port %>;
|
|
46
|
-
<% end %>
|
|
47
|
-
}
|
|
48
12
|
|
|
49
|
-
|
|
13
|
+
<% %w[http https].each do |protocol| %>
|
|
14
|
+
|
|
15
|
+
# This server is setup to serve www over <%= protocol %>.
|
|
50
16
|
server
|
|
51
17
|
{
|
|
52
|
-
|
|
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
|
+
|
|
53
29
|
client_max_body_size 10M;
|
|
54
30
|
|
|
55
31
|
server_name <%= rubber_env.domain %>;
|
|
@@ -72,6 +48,9 @@ http
|
|
|
72
48
|
|
|
73
49
|
location /
|
|
74
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
|
+
|
|
75
54
|
# needed to forward user's IP address to rails
|
|
76
55
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
77
56
|
|
|
@@ -111,7 +90,7 @@ http
|
|
|
111
90
|
|
|
112
91
|
if (!-f $request_filename)
|
|
113
92
|
{
|
|
114
|
-
proxy_pass http://
|
|
93
|
+
proxy_pass http://haproxy_mongrel;
|
|
115
94
|
break;
|
|
116
95
|
}
|
|
117
96
|
}
|
|
@@ -130,4 +109,5 @@ http
|
|
|
130
109
|
root <%= RUBBER_ROOT + "/public" %>;
|
|
131
110
|
}
|
|
132
111
|
}
|
|
133
|
-
|
|
112
|
+
|
|
113
|
+
<% end %>
|