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
data/README
ADDED
data/TODO
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
* extract ubuntu specific code into a strategy/factory pattern
|
|
2
|
+
* integrate chef and/or sprinkle for more robust package installs?
|
|
3
|
+
* figure out how to test the capistrano bits
|
|
4
|
+
* Script setup of round robin dns (Web role), mx records (mail role), etc in generators
|
|
5
|
+
* add scripted failover to generated configs for:
|
|
6
|
+
* remove web hosts from round robin on web host failure
|
|
7
|
+
* db failover (promote slave replica? master-master replicas? cluster?)
|
|
8
|
+
* Add in support for ELB
|
|
9
|
+
* Add in support for reserved instances
|
|
10
|
+
* Add in live DB backups (xtrabackup)
|
|
11
|
+
* Add in support for zabbix monitoring/notifications (others?)
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.1.7
|
data/bin/vulcanize
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
env = ENV['RUBBER_ENV'] || ENV['RAILS_ENV'] || 'development'
|
|
4
|
+
root = '.'
|
|
5
|
+
|
|
6
|
+
# if in a rails project, then use standard generate, otherwise
|
|
7
|
+
# we need a minimal rails environment for generators to run
|
|
8
|
+
#
|
|
9
|
+
if File.exist?(File.join(root, 'config', 'environment.rb'))
|
|
10
|
+
ARGV.insert(0, 'vulcanize')
|
|
11
|
+
require File.join(root, 'config', 'boot')
|
|
12
|
+
require 'commands/generate'
|
|
13
|
+
else
|
|
14
|
+
RAILS_ENV = ENV['RAILS_ENV'] = env
|
|
15
|
+
RAILS_ROOT = ENV['RAILS_ROOT'] = root
|
|
16
|
+
|
|
17
|
+
require 'rubygems'
|
|
18
|
+
gem 'rails'
|
|
19
|
+
module Rails
|
|
20
|
+
class << self
|
|
21
|
+
def vendor_rails?
|
|
22
|
+
false
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
require 'initializer'
|
|
28
|
+
class Rails::Initializer
|
|
29
|
+
def load_environment; end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Rails::Initializer.run do |config|
|
|
33
|
+
config.frameworks -= [:active_record, :action_controller]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
require 'rails_generator'
|
|
37
|
+
require 'rails_generator/scripts/generate'
|
|
38
|
+
|
|
39
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
|
40
|
+
Rails::Generator::Scripts::Generate.new.run(['vulcanize'] + ARGV)
|
|
41
|
+
end
|
|
@@ -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,66 @@
|
|
|
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
|
+
<% if resque_host = rubber_instances.for_role('resque').first %>
|
|
63
|
+
RackBaseURI /resque
|
|
64
|
+
<% end %>
|
|
65
|
+
|
|
66
|
+
</VirtualHost>
|
|
@@ -0,0 +1,34 @@
|
|
|
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').sort {|a,b| a.name <=> b.name }.each do |ic| %>
|
|
21
|
+
<li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
|
|
22
|
+
<% end %>
|
|
23
|
+
|
|
24
|
+
<% rubber_instances.sort {|a,b| a.name <=> b.name }.each do |ic| %>
|
|
25
|
+
<li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
|
|
26
|
+
<% end %>
|
|
27
|
+
|
|
28
|
+
<% if resque_host = rubber_instances.for_role('resque').first %>
|
|
29
|
+
<li><a href="/resque/">Resque</a></li>
|
|
30
|
+
<% end %>
|
|
31
|
+
|
|
32
|
+
</ul>
|
|
33
|
+
</body>
|
|
34
|
+
</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,17 @@
|
|
|
1
|
+
<%
|
|
2
|
+
@read_cmd = 'crontab -l'
|
|
3
|
+
@write_cmd = 'crontab -'
|
|
4
|
+
%>
|
|
5
|
+
|
|
6
|
+
PATH=/sbin:/usr/sbin:/usr/local/sbin:<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:/usr/bin:/bin
|
|
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
|
+
RUBYOPT=rubygems
|
|
12
|
+
|
|
13
|
+
# Roll all rails logs at midnight
|
|
14
|
+
0 0 * * * LOG_DIR=<%= RUBBER_ROOT %>/log <%= RUBBER_ROOT %>/script/cron-rake rubber:rotate_logs
|
|
15
|
+
|
|
16
|
+
# Automatically set the clock for all machines
|
|
17
|
+
<%= rand(60) %> 4 * * * <%= RUBBER_ROOT %>/script/cron-sh -- ntpdate pool.ntp.org
|