rubber 1.0.2
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 +39 -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 +62 -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 +30 -0
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +7 -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 +16 -0
- data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +9 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +104 -0
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +241 -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 +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 +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/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/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-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 +12 -0
- data/generators/vulcanize/templates/passenger/templates.yml +1 -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 +305 -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 +69 -0
- data/lib/rubber/dns/dyndns.rb +63 -0
- data/lib/rubber/dns/nettica.rb +73 -0
- data/lib/rubber/dns/zerigo.rb +131 -0
- data/lib/rubber/environment.rb +161 -0
- data/lib/rubber/generator.rb +197 -0
- data/lib/rubber/instance.rb +165 -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 +348 -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 +357 -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 +221 -0
- data/lib/rubber/util.rb +37 -0
- data/test/environment_test.rb +118 -0
- data/test/generator_test.rb +323 -0
- data/test/instance_test.rb +93 -0
- data/test/test_helper.rb +4 -0
- data/test/util_test.rb +16 -0
- metadata +274 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
namespace :rubber do
|
|
3
|
+
|
|
4
|
+
namespace :apache do
|
|
5
|
+
|
|
6
|
+
rubber.allow_optional_tasks(self)
|
|
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
|
+
|
|
14
|
+
# serial_task can only be called after roles defined - not normally a problem, but
|
|
15
|
+
# rubber auto-roles don't get defined till after all tasks are defined
|
|
16
|
+
on :load do
|
|
17
|
+
rubber.serial_task self, :serial_restart, :roles => :apache do
|
|
18
|
+
run "/etc/init.d/apache2 restart"
|
|
19
|
+
end
|
|
20
|
+
rubber.serial_task self, :serial_reload, :roles => :apache do
|
|
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"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
before "deploy:stop", "rubber:apache:stop"
|
|
26
|
+
after "deploy:start", "rubber:apache:start"
|
|
27
|
+
after "deploy:restart", "rubber:apache:reload"
|
|
28
|
+
|
|
29
|
+
desc "Stops the apache web server"
|
|
30
|
+
task :stop, :roles => :apache, :on_error => :continue do
|
|
31
|
+
run "/etc/init.d/apache2 stop"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
desc "Starts the apache web server"
|
|
35
|
+
task :start, :roles => :apache do
|
|
36
|
+
run "/etc/init.d/apache2 start"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
desc "Restarts the apache web server"
|
|
40
|
+
task :restart, :roles => :apache do
|
|
41
|
+
serial_restart
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
desc "Reloads the apache web server"
|
|
45
|
+
task :reload, :roles => :apache do
|
|
46
|
+
serial_reload
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/apache2/mods-available/deflate.conf"
|
|
3
|
+
@post = "a2enmod deflate"
|
|
4
|
+
%>
|
|
5
|
+
<IfModule mod_deflate.c>
|
|
6
|
+
SetOutputFilter DEFLATE
|
|
7
|
+
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
|
8
|
+
BrowserMatch ^Mozilla/4.0[678] no-gzip
|
|
9
|
+
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
|
|
10
|
+
</IfModule>
|
|
@@ -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"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/etc/apache2/mods-available/setenvif.conf"
|
|
3
|
+
@post = "a2enmod setenvif"
|
|
4
|
+
%>
|
|
5
|
+
<IfModule mod_setenvif.c>
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# The following directives modify normal HTTP response behavior to
|
|
9
|
+
# handle known problems with browser implementations.
|
|
10
|
+
#
|
|
11
|
+
BrowserMatch "Mozilla/2" nokeepalive
|
|
12
|
+
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
|
|
13
|
+
BrowserMatch "RealPlayer 4\.0" force-response-1.0
|
|
14
|
+
BrowserMatch "Java/1\.0" force-response-1.0
|
|
15
|
+
BrowserMatch "JDK/1\.0" force-response-1.0
|
|
16
|
+
|
|
17
|
+
#
|
|
18
|
+
# The following directive disables redirects on non-GET requests for
|
|
19
|
+
# a directory that does not include the trailing slash. This fixes a
|
|
20
|
+
# problem with Microsoft WebFolders which does not appropriately handle
|
|
21
|
+
# redirects for folders with DAV methods.
|
|
22
|
+
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
|
|
23
|
+
#
|
|
24
|
+
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
|
|
25
|
+
BrowserMatch "MS FrontPage" redirect-carefully
|
|
26
|
+
BrowserMatch "^WebDrive" redirect-carefully
|
|
27
|
+
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
|
|
28
|
+
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
|
|
29
|
+
BrowserMatch "^XML Spy" redirect-carefully
|
|
30
|
+
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
|
|
31
|
+
|
|
32
|
+
SetEnvIf User-Agent "^websitepulse.*" no-log
|
|
33
|
+
|
|
34
|
+
# Netscape 4.x has some problems...
|
|
35
|
+
BrowserMatch ^Mozilla/4 gzip-only-text/html
|
|
36
|
+
|
|
37
|
+
# Netscape 4.06-4.08 have some more problems
|
|
38
|
+
BrowserMatch ^Mozilla/4\.0[678] no-gzip
|
|
39
|
+
|
|
40
|
+
# MSIE masquerades as Netscape, but it is fine
|
|
41
|
+
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
|
|
42
|
+
|
|
43
|
+
# Don't compress images
|
|
44
|
+
SetEnvIfNoCase Request_URI \
|
|
45
|
+
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
|
|
46
|
+
|
|
47
|
+
# Don't compress downloads from files that are
|
|
48
|
+
# downloaded before they have been pushed to S3.
|
|
49
|
+
SetEnvIfNoCase Request_URI ^/assets/.* no-gzip dont-vary
|
|
50
|
+
|
|
51
|
+
</IfModule>
|
|
52
|
+
|
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>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/var/www/index.html"
|
|
3
|
+
%>
|
|
4
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
5
|
+
<html>
|
|
6
|
+
<head>
|
|
7
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
8
|
+
<title>Rubber Admin Tools</title>
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<h1>Rubber Admin Tools</h1>
|
|
12
|
+
<ul>
|
|
13
|
+
|
|
14
|
+
<li><a href="/munin/">Munin</a></li>
|
|
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
|
+
|
|
20
|
+
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
|
21
|
+
<li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
<% rubber_instances.each do |ic| %>
|
|
25
|
+
<li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
|
|
26
|
+
<% end %>
|
|
27
|
+
|
|
28
|
+
</ul>
|
|
29
|
+
</body>
|
|
30
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
description: The apache module
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
|
|
2
|
+
|
|
3
|
+
env = ENV['RUBBER_ENV'] ||= (ENV['RAILS_ENV'] || 'production')
|
|
4
|
+
root = File.dirname(__FILE__)
|
|
5
|
+
|
|
6
|
+
# this tries first as a rails plugin then as a gem
|
|
7
|
+
$:.unshift "#{root}/vendor/plugins/rubber/lib/"
|
|
8
|
+
require 'rubber'
|
|
9
|
+
|
|
10
|
+
Rubber::initialize(root, env)
|
|
11
|
+
require 'rubber/capistrano'
|
|
12
|
+
|
|
13
|
+
Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
|
|
14
|
+
load 'config/deploy'
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# This is a sample Capistrano config file for rubber
|
|
2
|
+
|
|
3
|
+
set :rails_env, RUBBER_ENV
|
|
4
|
+
|
|
5
|
+
on :load do
|
|
6
|
+
set :application, rubber_env.app_name
|
|
7
|
+
set :runner, rubber_env.app_user
|
|
8
|
+
set :deploy_to, "/mnt/#{application}-#{RUBBER_ENV}"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Use a simple directory tree copy here to make demo easier.
|
|
12
|
+
# You probably want to use your own repository for a real app
|
|
13
|
+
set :scm, :none
|
|
14
|
+
set :repository, "."
|
|
15
|
+
set :deploy_via, :copy
|
|
16
|
+
|
|
17
|
+
# Easier to do system level config as root - probably should do it through
|
|
18
|
+
# sudo in the future. We use ssh keys for access, so no passwd needed
|
|
19
|
+
set :user, 'root'
|
|
20
|
+
set :password, nil
|
|
21
|
+
|
|
22
|
+
# Use sudo with user rails for cap deploy:[stop|start|restart]
|
|
23
|
+
# This way exposed services (mongrel) aren't running as a privileged user
|
|
24
|
+
set :use_sudo, true
|
|
25
|
+
|
|
26
|
+
# How many old releases should be kept around when running "cleanup" task
|
|
27
|
+
set :keep_releases, 3
|
|
28
|
+
|
|
29
|
+
# Lets us work with staging instances without having to checkin config files
|
|
30
|
+
# (instance*.yml + rubber*.yml) for a deploy. This gives us the
|
|
31
|
+
# convenience of not having to checkin files for staging, as well as
|
|
32
|
+
# the safety of forcing it to be checked in for production.
|
|
33
|
+
set :push_instance_config, RUBBER_ENV != 'production'
|
|
34
|
+
|
|
35
|
+
# Allows the tasks defined to fail gracefully if there are no hosts for them.
|
|
36
|
+
# Comment out or use "required_task" for default cap behavior of a hard failure
|
|
37
|
+
rubber.allow_optional_tasks(self)
|
|
38
|
+
# Wrap tasks in the deploy namespace that have roles so that we can use FILTER
|
|
39
|
+
# with something like a deploy:cold which tries to run deploy:migrate but can't
|
|
40
|
+
# because we filtered out the :db role
|
|
41
|
+
namespace :deploy do
|
|
42
|
+
rubber.allow_optional_tasks(self)
|
|
43
|
+
tasks.values.each do |t|
|
|
44
|
+
if t.options[:roles]
|
|
45
|
+
task t.name, t.options, &t.body
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# load in the deploy scripts installed by vulcanize for each rubber module
|
|
51
|
+
Dir["#{File.dirname(__FILE__)}/rubber/deploy-*.rb"].each do |deploy_file|
|
|
52
|
+
load deploy_file
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
after "deploy", "deploy:cleanup"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@read_cmd = 'crontab -l'
|
|
3
|
+
@write_cmd = 'crontab -'
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/sbin:/usr/sbin
|
|
7
|
+
MAILTO=<%= rubber_env.admin_email %>
|
|
8
|
+
# don't need to set RUBBER_ENV for each script since we set it for all cron here
|
|
9
|
+
RUBBER_ENV=<%= RUBBER_ENV %>
|
|
10
|
+
RAILS_ENV=<%= RUBBER_ENV %>
|
|
11
|
+
|
|
12
|
+
# Roll all rails logs at midnight
|
|
13
|
+
0 0 * * * LOG_DIR=<%= RUBBER_ROOT %>/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
|
|
14
|
+
|
|
15
|
+
# Automatically set the clock for all machines
|
|
16
|
+
<%= rand(60) %> 4 * * * <%= RUBBER_ROOT %>/script/cron-sh -- ntpdate pool.ntp.org
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@path = "/root/.profile"
|
|
3
|
+
@additive = ["# rubber-common-start", "# rubber-common-end"]
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
# convenience to simply running rails console, etc with correct env
|
|
7
|
+
export RUBBER_ENV=<%= RUBBER_ENV %>
|
|
8
|
+
export RAILS_ENV=<%= RUBBER_ENV %>
|
|
9
|
+
alias current="cd <%= RUBBER_ROOT %>"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
namespace :rubber do
|
|
2
|
+
namespace :base do
|
|
3
|
+
|
|
4
|
+
rubber.allow_optional_tasks(self)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
before "rubber:install_packages", "rubber:base:pre_install_ruby"
|
|
8
|
+
task :pre_install_ruby do
|
|
9
|
+
|
|
10
|
+
# figure out which hosts we have specified enterprise ruby for
|
|
11
|
+
sys_ruby_hosts = []
|
|
12
|
+
ent_ruby_hosts = []
|
|
13
|
+
rubber_instances.filtered.each do |ic|
|
|
14
|
+
env = rubber_cfg.environment.bind(ic.role_names, ic.name)
|
|
15
|
+
if env.use_enterprise_ruby
|
|
16
|
+
ent_ruby_hosts << ic.full_name
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if ent_ruby_hosts.size > 0
|
|
21
|
+
|
|
22
|
+
task :_install_enterprise_ruby, :hosts => ent_ruby_hosts do
|
|
23
|
+
|
|
24
|
+
# preferences to pick up specific Ruby packages from brightbox
|
|
25
|
+
prefs = <<-DATA
|
|
26
|
+
Package: *
|
|
27
|
+
Pin: release l=brightbox
|
|
28
|
+
Pin-Priority: 1001
|
|
29
|
+
|
|
30
|
+
Package: ruby1.8-elisp
|
|
31
|
+
Pin: release l=Ubuntu
|
|
32
|
+
Pin-Priority: 1001
|
|
33
|
+
DATA
|
|
34
|
+
|
|
35
|
+
prefs.gsub!(/^ */, '') # remove leading whitespace
|
|
36
|
+
put(prefs, '/etc/apt/preferences')
|
|
37
|
+
|
|
38
|
+
rubber.sudo_script 'install_enterprise_ruby', <<-ENDSCRIPT
|
|
39
|
+
wget http://apt.brightbox.net/release.asc -O - | apt-key add -
|
|
40
|
+
echo "deb http://apt.brightbox.net/ hardy rubyee" > /etc/apt/sources.list.d/brightbox-rubyee.list
|
|
41
|
+
ENDSCRIPT
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
_install_enterprise_ruby
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# The ubuntu rubygem package is woefully out of date, so install it manually
|
|
51
|
+
after "rubber:install_packages", "rubber:base:install_rubygems"
|
|
52
|
+
task :install_rubygems do
|
|
53
|
+
ver = "1.3.5"
|
|
54
|
+
src_url = "http://rubyforge.org/frs/download.php/60718/rubygems-#{ver}.tgz"
|
|
55
|
+
rubber.sudo_script 'install_rubygems', <<-ENDSCRIPT
|
|
56
|
+
if [[ `gem --version 2>&1` != "#{ver}" ]]; then
|
|
57
|
+
wget -qNP /tmp #{src_url}
|
|
58
|
+
tar -C /tmp -xzf /tmp/rubygems-#{ver}.tgz
|
|
59
|
+
ruby -C /tmp/rubygems-#{ver} setup.rb
|
|
60
|
+
ln -sf /usr/bin/gem1.8 /usr/bin/gem
|
|
61
|
+
rm -rf /tmp/rubygems*
|
|
62
|
+
gem source -l > /dev/null
|
|
63
|
+
fi
|
|
64
|
+
ENDSCRIPT
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# git in ubuntu 7.0.4 is very out of date and doesn't work well with capistrano
|
|
68
|
+
after "rubber:install_packages", "rubber:base:install_git" if scm == "git"
|
|
69
|
+
task :install_git do
|
|
70
|
+
rubber.run_script 'install_git', <<-ENDSCRIPT
|
|
71
|
+
if ! git --version &> /dev/null; then
|
|
72
|
+
arch=`uname -m`
|
|
73
|
+
if [ "$arch" = "x86_64" ]; then
|
|
74
|
+
src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_amd64.deb"
|
|
75
|
+
else
|
|
76
|
+
src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_i386.deb"
|
|
77
|
+
fi
|
|
78
|
+
apt-get install liberror-perl libdigest-sha1-perl
|
|
79
|
+
wget -qO /tmp/git.deb ${src}
|
|
80
|
+
dpkg -i /tmp/git.deb
|
|
81
|
+
|
|
82
|
+
if [[ "#{repository}" =~ "@" ]]; then
|
|
83
|
+
# Get host key for src machine to prevent ssh from failing
|
|
84
|
+
rm -f ~/.ssh/known_hosts
|
|
85
|
+
! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
|
|
86
|
+
fi
|
|
87
|
+
fi
|
|
88
|
+
ENDSCRIPT
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# We need a rails user for safer permissions used by deploy.rb
|
|
92
|
+
after "rubber:install_packages", "rubber:base:custom_install"
|
|
93
|
+
task :custom_install do
|
|
94
|
+
rubber.sudo_script 'custom_install', <<-ENDSCRIPT
|
|
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
|
|
97
|
+
|
|
98
|
+
# add ssh keys for root
|
|
99
|
+
if [[ ! -f /root/.ssh/id_dsa ]]; then ssh-keygen -q -t dsa -N '' -f /root/.ssh/id_dsa; fi
|
|
100
|
+
ENDSCRIPT
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
end
|