rubber 1.9.1 → 1.10.1

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.
Files changed (41) hide show
  1. data/VERSION +1 -1
  2. data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +1 -2
  3. data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +18 -2
  4. data/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +1 -1
  5. data/generators/vulcanize/templates/base/config/rubber/rubber.yml +4 -0
  6. data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +1 -2
  7. data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +1 -2
  8. data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +6 -6
  9. data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +1 -2
  10. data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +9 -2
  11. data/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +1 -2
  12. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis-sysctl.conf +7 -0
  13. data/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +8 -0
  14. data/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  15. data/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +4 -4
  16. data/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +2 -2
  17. data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +2 -2
  18. data/lib/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +1 -2
  19. data/lib/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +18 -2
  20. data/lib/generators/vulcanize/templates/base/config/rubber/rubber-rvm.yml +1 -1
  21. data/lib/generators/vulcanize/templates/base/config/rubber/rubber.yml +4 -0
  22. data/lib/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf +1 -2
  23. data/lib/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +1 -2
  24. data/lib/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +6 -6
  25. data/lib/generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf +1 -2
  26. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +9 -2
  27. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf +1 -2
  28. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis-sysctl.conf +7 -0
  29. data/lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf +8 -0
  30. data/lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml +4 -0
  31. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_web/monit-resque_web.conf +4 -4
  32. data/lib/generators/vulcanize/templates/resque/config/rubber/role/resque_worker/monit-resque_worker.conf +2 -2
  33. data/lib/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +2 -2
  34. data/lib/rubber/cloud/aws.rb +3 -1
  35. data/lib/rubber/instance.rb +23 -4
  36. data/lib/rubber/recipes/rubber/security_groups.rb +15 -2
  37. data/lib/rubber/recipes/rubber/volumes.rb +3 -2
  38. data/test/environment_test.rb +5 -12
  39. data/test/instance_test.rb +37 -3
  40. data/test/zerigo_test.rb +8 -8
  41. metadata +14 -45
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.9.1
1
+ 1.10.1
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-apache.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/apache2.pid" %>
5
- check process apache with pidfile <%= PIDFILE %>
4
+ check process apache with pidfile /var/run/apache2.pid
6
5
  group apache-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service apache2 start"
8
7
  stop program = "/usr/bin/env service apache2 stop"
@@ -6,7 +6,7 @@ namespace :rubber do
6
6
  before "rubber:setup_gem_sources", "rubber:base:install_rvm"
7
7
  task :install_rvm do
8
8
  rubber.sudo_script "install_rvm", <<-ENDSCRIPT
9
- if [[ `rvm --version 2> /dev/null` == "" ]]; then
9
+ if [[ ! `rvm --version 2> /dev/null` =~ "#{rubber_env.rvm_version}" ]]; then
10
10
  echo "rvm_prefix=/usr/local/" > /etc/rvmrc
11
11
  echo "#{rubber_env.rvm_prepare}" > /etc/profile.d/rvm.sh
12
12
 
@@ -55,10 +55,26 @@ namespace :rubber do
55
55
  install_rvm_ruby_script = <<-ENDSCRIPT
56
56
  rvm_ver=$1
57
57
  if [[ ! `rvm list default 2> /dev/null` =~ "$rvm_ver" ]]; then
58
- rvm install $rvm_ver
58
+ echo "RVM is compiling/installing ruby $rvm_ver, this may take a while"
59
+
60
+ nohup rvm install $rvm_ver &> /tmp/install_rvm_ruby.log &
61
+ sleep 1
62
+
63
+ while true; do
64
+ if ! ps ax | grep -q "[r]vm install"; then exit; fi
65
+ echo -n .
66
+ sleep 5
67
+ done
68
+
59
69
  # need to set default after using once or something in env is broken
60
70
  rvm use $rvm_ver &> /dev/null
61
71
  rvm use $rvm_ver --default
72
+
73
+ # Something flaky with $PATH having an entry for "bin" which breaks
74
+ # munin, the below seems to fix it
75
+ rvm use $rvm_ver
76
+ rvm repair environments
77
+ rvm use $rvm_ver
62
78
  fi
63
79
  ENDSCRIPT
64
80
  opts[:script_args] = '$CAPISTRANO:VAR$'
@@ -12,7 +12,7 @@
12
12
  packages: [build-essential, git-core, subversion, curl, autoconf, bison, ruby, zlib1g-dev, libssl-dev, libreadline5-dev, libxml2-dev]
13
13
 
14
14
  # REQUIRED: the version of rvm itself
15
- rvm_version: 1.1.3
15
+ rvm_version: 1.2.6
16
16
 
17
17
  # REQUIRED: Set to the rvm version string for the ruby version you wish to use
18
18
  # Run "rvm list known" to see the list of possible options
@@ -130,6 +130,10 @@ auto_security_groups: true
130
130
  # account, or even multiple apps
131
131
  isolate_security_groups: true
132
132
 
133
+ # OPTIONAL: Prompts one to sync security group rules when the ones in amazon
134
+ # differ from those in rubber
135
+ prompt_for_security_group_sync: true
136
+
133
137
  # OPTIONAL: The packages to install on all instances
134
138
  # You can install a specific version of a package by using a sub-array of pkg, version
135
139
  # For example, packages: [[rake, 0.7.1], irb]
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-haproxy.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/haproxy.pid" %>
5
- check process haproxy with pidfile <%= PIDFILE %>
4
+ check process haproxy with pidfile /var/run/haproxy.pid
6
5
  group haproxy-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service haproxy start"
8
7
  stop program = "/usr/bin/env service haproxy stop"
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-jetty.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/jetty.pid" %>
5
- check process jetty with pidfile <%= PIDFILE %>
4
+ check process jetty with pidfile /var/run/jetty.pid
6
5
  group jetty-<%= RUBBER_ENV %>
7
6
  start program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh start"
8
7
  stop program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh stop"
@@ -4,17 +4,17 @@
4
4
 
5
5
  <% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %>
6
6
 
7
- <% PORT = rubber_env.mongrel_base_port + i %>
8
- <% PIDFILE = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{PORT}.pid" %>
9
- check process mongrel-<%= PORT %> with pidfile <%= PIDFILE %>
7
+ <% port = rubber_env.mongrel_base_port + i %>
8
+ <% pidfile = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{port}.pid" %>
9
+ check process mongrel-<%= port %> with pidfile <%= pidfile %>
10
10
  group mongrel-<%= RUBBER_ENV %>
11
- start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= PORT %>'"
11
+ start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= port %>'"
12
12
  <%
13
13
  # Stop gracefully - monit waits for stop to complete (since below process exits immediately, it must
14
14
  # wait for pid to disappear) before trying to start
15
15
  %>
16
- stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= PORT %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= PORT %>'"
16
+ stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= port %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= port %>'"
17
17
  if totalmem > 200.0 MB for 3 cycles then restart
18
18
  <%# monit needs to test on same same interface that mongrel is listening on (see mongrel_cluster.yml) %>
19
- if failed host <%= rubber_env.host %> port <%= PORT %> protocol http with timeout 10 seconds for 10 cycles then restart
19
+ if failed host <%= rubber_env.host %> port <%= port %> protocol http with timeout 10 seconds for 10 cycles then restart
20
20
  <% end %>
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-nginx.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/nginx.pid" %>
5
- check process nginx with pidfile <%= PIDFILE %>
4
+ check process nginx with pidfile /var/run/nginx.pid
6
5
  group nginx-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service nginx start"
8
7
  stop program = "/usr/bin/env service nginx stop"
@@ -4,5 +4,12 @@
4
4
  @additive = ['# start-redis-crontab', '# end-redis-crontab']
5
5
  %>
6
6
 
7
- # backup redis DBs every hour
8
- 0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="tar -czf \%dir\%/redis_\%time_stamp\%.tgz <%= rubber_env.redis_db_dir %>" <%= RUBBER_ROOT %>/script/cron-rake rubber:backup
7
+ <%
8
+ # Backup db every 3 hours to secondary db if available, else primary db
9
+ backup_redis_host = rubber_instances.for_role('redis_slave').first rescue nil
10
+ backup_redis_host ||= rubber_instances.for_role('redis_master').first
11
+ if backup_redis_host.name == rubber_env.host
12
+ %>
13
+ # Backup redis DBs every hour.
14
+ 0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="nice zip -r \%dir\%/redis_\%time_stamp\%.zip <%= rubber_env.redis_db_dir %> -x \*temp\*.rdb" <%= RUBBER_ROOT %>/script/cron-rake rubber:backup
15
+ <% end %>
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-redis.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/redis.pid" %>
5
- check process redis with pidfile <%= PIDFILE %>
4
+ check process redis with pidfile /var/run/redis.pid
6
5
  group redis-<%= RUBBER_ENV %>
7
6
  start program = "/etc/init.d/redis-server start"
8
7
  stop program = "/etc/init.d/redis-server stop"
@@ -0,0 +1,7 @@
1
+ <%
2
+ @path = "/etc/sysctl.d/60-redis.conf"
3
+ @post = "/usr/sbin/service procps start"
4
+ %>
5
+
6
+ # allows redis to bgsave when memory is tight
7
+ vm.overcommit_memory=1
@@ -97,6 +97,11 @@ dbfilename dump.rdb
97
97
  # Note that you must specify a directory here, not a file name.
98
98
  dir <%= rubber_env.redis_db_dir %>
99
99
 
100
+ <%-
101
+ redis_master = rubber_instances.for_role('redis_master').first
102
+
103
+ if rubber_instances[rubber_env.host].role_names.include?('redis_slave')
104
+ %>
100
105
  ################################# REPLICATION #################################
101
106
 
102
107
  # Master-Slave replication. Use slaveof to make a Redis instance a copy of
@@ -106,12 +111,15 @@ dir <%= rubber_env.redis_db_dir %>
106
111
  #
107
112
  # slaveof <masterip> <masterport>
108
113
 
114
+ slaveof <%= redis_master.name %> 6379
115
+
109
116
  # If the master is password protected (using the "requirepass" configuration
110
117
  # directive below) it is possible to tell the slave to authenticate before
111
118
  # starting the replication synchronization process, otherwise the master will
112
119
  # refuse the slave request.
113
120
  #
114
121
  # masterauth <master-password>
122
+ <%- end %>
115
123
 
116
124
  ################################## SECURITY ###################################
117
125
 
@@ -4,6 +4,10 @@ redis_db_dir: /mnt/redis
4
4
 
5
5
  gems: [redis]
6
6
 
7
+ role_dependencies:
8
+ redis_master: [redis]
9
+ redis_slave: [redis]
10
+
7
11
  roles:
8
12
  redis:
9
13
  packages: [redis-server]
@@ -1,12 +1,12 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-resque_web.conf'
3
3
 
4
- PIDFILE = "/var/run/resque_web.pid"
5
- start_program = "HOME=/root resque-web --pid-file #{PIDFILE} --port #{rubber_env.resque_web_port} --no-launch #{RUBBER_ROOT}/config/initializers/resque.rb"
6
- stop_program = "HOME=/root resque-web --pid-file #{PIDFILE} --kill"
4
+ pidfile = "/var/run/resque_web.pid"
5
+ start_program = "HOME=/root resque-web --pid-file #{pidfile} --port #{rubber_env.resque_web_port} --no-launch #{RUBBER_ROOT}/config/initializers/resque.rb"
6
+ stop_program = "HOME=/root resque-web --pid-file #{pidfile} --kill"
7
7
  %>
8
8
 
9
- check process resque_web with pidfile <%= PIDFILE %>
9
+ check process resque_web with pidfile <%= pidfile %>
10
10
  group resque_web
11
11
  start program = "/bin/bash -l -c '<%= start_program %>'"
12
12
  stop program = "/bin/bash -l -c '<%= stop_program %>'"
@@ -4,13 +4,13 @@
4
4
 
5
5
  <% rubber_env.resque_workers.each_with_index do |worker, i| %>
6
6
  <%
7
- PIDFILE = "#{RUBBER_ROOT}/tmp/pids/resque_worker_#{i}.pid"
7
+ pidfile = "#{RUBBER_ROOT}/tmp/pids/resque_worker_#{i}.pid"
8
8
 
9
9
  start_program = "/usr/bin/sudo -H -u #{rubber_env.app_user} bash -l -c 'cd #{RUBBER_ROOT} && ./script/resque_worker_management.rb start #{i}'"
10
10
  stop_program = "/usr/bin/sudo -H -u #{rubber_env.app_user} bash -l -c 'cd #{RUBBER_ROOT} && ./script/resque_worker_management.rb stop #{i} TERM'"
11
11
  %>
12
12
 
13
- check process resque_worker_<%= i %> with pidfile <%= PIDFILE %>
13
+ check process resque_worker_<%= i %> with pidfile <%= pidfile %>
14
14
  group resque_worker
15
15
  start program = "<%= start_program %>"
16
16
  stop program = "<%= stop_program %>"
@@ -1,12 +1,12 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-sphinx.conf'
3
3
 
4
- PIDFILE = "#{RUBBER_ROOT}/log/searchd.#{RUBBER_ENV}.pid"
4
+ pidfile = "#{RUBBER_ROOT}/log/searchd.#{RUBBER_ENV}.pid"
5
5
  start_program = "cd #{RUBBER_ROOT} && rake ts:start"
6
6
  stop_program = "cd #{RUBBER_ROOT} && rake ts:stop"
7
7
  %>
8
8
 
9
- check process sphinx with pidfile <%= PIDFILE %>
9
+ check process sphinx with pidfile <%= pidfile %>
10
10
  group sphinx-<%= RUBBER_ENV %>
11
11
  start program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> bash -l -c '<%= start_program %>'"
12
12
  stop program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> bash -l -c '<%= stop_program %>'"
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-apache.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/apache2.pid" %>
5
- check process apache with pidfile <%= PIDFILE %>
4
+ check process apache with pidfile /var/run/apache2.pid
6
5
  group apache-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service apache2 start"
8
7
  stop program = "/usr/bin/env service apache2 stop"
@@ -6,7 +6,7 @@ namespace :rubber do
6
6
  before "rubber:setup_gem_sources", "rubber:base:install_rvm"
7
7
  task :install_rvm do
8
8
  rubber.sudo_script "install_rvm", <<-ENDSCRIPT
9
- if [[ `rvm --version 2> /dev/null` == "" ]]; then
9
+ if [[ ! `rvm --version 2> /dev/null` =~ "#{rubber_env.rvm_version}" ]]; then
10
10
  echo "rvm_prefix=/usr/local/" > /etc/rvmrc
11
11
  echo "#{rubber_env.rvm_prepare}" > /etc/profile.d/rvm.sh
12
12
 
@@ -55,10 +55,26 @@ namespace :rubber do
55
55
  install_rvm_ruby_script = <<-ENDSCRIPT
56
56
  rvm_ver=$1
57
57
  if [[ ! `rvm list default 2> /dev/null` =~ "$rvm_ver" ]]; then
58
- rvm install $rvm_ver
58
+ echo "RVM is compiling/installing ruby $rvm_ver, this may take a while"
59
+
60
+ nohup rvm install $rvm_ver &> /tmp/install_rvm_ruby.log &
61
+ sleep 1
62
+
63
+ while true; do
64
+ if ! ps ax | grep -q "[r]vm install"; then exit; fi
65
+ echo -n .
66
+ sleep 5
67
+ done
68
+
59
69
  # need to set default after using once or something in env is broken
60
70
  rvm use $rvm_ver &> /dev/null
61
71
  rvm use $rvm_ver --default
72
+
73
+ # Something flaky with $PATH having an entry for "bin" which breaks
74
+ # munin, the below seems to fix it
75
+ rvm use $rvm_ver
76
+ rvm repair environments
77
+ rvm use $rvm_ver
62
78
  fi
63
79
  ENDSCRIPT
64
80
  opts[:script_args] = '$CAPISTRANO:VAR$'
@@ -12,7 +12,7 @@
12
12
  packages: [build-essential, git-core, subversion, curl, autoconf, bison, ruby, zlib1g-dev, libssl-dev, libreadline5-dev, libxml2-dev]
13
13
 
14
14
  # REQUIRED: the version of rvm itself
15
- rvm_version: 1.1.3
15
+ rvm_version: 1.2.6
16
16
 
17
17
  # REQUIRED: Set to the rvm version string for the ruby version you wish to use
18
18
  # Run "rvm list known" to see the list of possible options
@@ -130,6 +130,10 @@ auto_security_groups: true
130
130
  # account, or even multiple apps
131
131
  isolate_security_groups: true
132
132
 
133
+ # OPTIONAL: Prompts one to sync security group rules when the ones in amazon
134
+ # differ from those in rubber
135
+ prompt_for_security_group_sync: true
136
+
133
137
  # OPTIONAL: The packages to install on all instances
134
138
  # You can install a specific version of a package by using a sub-array of pkg, version
135
139
  # For example, packages: [[rake, 0.7.1], irb]
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-haproxy.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/haproxy.pid" %>
5
- check process haproxy with pidfile <%= PIDFILE %>
4
+ check process haproxy with pidfile /var/run/haproxy.pid
6
5
  group haproxy-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service haproxy start"
8
7
  stop program = "/usr/bin/env service haproxy stop"
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-jetty.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/jetty.pid" %>
5
- check process jetty with pidfile <%= PIDFILE %>
4
+ check process jetty with pidfile /var/run/jetty.pid
6
5
  group jetty-<%= RUBBER_ENV %>
7
6
  start program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh start"
8
7
  stop program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh stop"
@@ -4,17 +4,17 @@
4
4
 
5
5
  <% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %>
6
6
 
7
- <% PORT = rubber_env.mongrel_base_port + i %>
8
- <% PIDFILE = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{PORT}.pid" %>
9
- check process mongrel-<%= PORT %> with pidfile <%= PIDFILE %>
7
+ <% port = rubber_env.mongrel_base_port + i %>
8
+ <% pidfile = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{port}.pid" %>
9
+ check process mongrel-<%= port %> with pidfile <%= pidfile %>
10
10
  group mongrel-<%= RUBBER_ENV %>
11
- start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= PORT %>'"
11
+ start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= port %>'"
12
12
  <%
13
13
  # Stop gracefully - monit waits for stop to complete (since below process exits immediately, it must
14
14
  # wait for pid to disappear) before trying to start
15
15
  %>
16
- stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= PORT %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= PORT %>'"
16
+ stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= port %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= port %>'"
17
17
  if totalmem > 200.0 MB for 3 cycles then restart
18
18
  <%# monit needs to test on same same interface that mongrel is listening on (see mongrel_cluster.yml) %>
19
- if failed host <%= rubber_env.host %> port <%= PORT %> protocol http with timeout 10 seconds for 10 cycles then restart
19
+ if failed host <%= rubber_env.host %> port <%= port %> protocol http with timeout 10 seconds for 10 cycles then restart
20
20
  <% end %>
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-nginx.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/nginx.pid" %>
5
- check process nginx with pidfile <%= PIDFILE %>
4
+ check process nginx with pidfile /var/run/nginx.pid
6
5
  group nginx-<%= RUBBER_ENV %>
7
6
  start program = "/usr/bin/env service nginx start"
8
7
  stop program = "/usr/bin/env service nginx stop"
@@ -4,5 +4,12 @@
4
4
  @additive = ['# start-redis-crontab', '# end-redis-crontab']
5
5
  %>
6
6
 
7
- # backup redis DBs every hour
8
- 0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="tar -czf \%dir\%/redis_\%time_stamp\%.tgz <%= rubber_env.redis_db_dir %>" <%= RUBBER_ROOT %>/script/cron-rake rubber:backup
7
+ <%
8
+ # Backup db every 3 hours to secondary db if available, else primary db
9
+ backup_redis_host = rubber_instances.for_role('redis_slave').first rescue nil
10
+ backup_redis_host ||= rubber_instances.for_role('redis_master').first
11
+ if backup_redis_host.name == rubber_env.host
12
+ %>
13
+ # Backup redis DBs every hour.
14
+ 0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="nice zip -r \%dir\%/redis_\%time_stamp\%.zip <%= rubber_env.redis_db_dir %> -x \*temp\*.rdb" <%= RUBBER_ROOT %>/script/cron-rake rubber:backup
15
+ <% end %>
@@ -1,8 +1,7 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-redis.conf'
3
3
  %>
4
- <% PIDFILE = "/var/run/redis.pid" %>
5
- check process redis with pidfile <%= PIDFILE %>
4
+ check process redis with pidfile /var/run/redis.pid
6
5
  group redis-<%= RUBBER_ENV %>
7
6
  start program = "/etc/init.d/redis-server start"
8
7
  stop program = "/etc/init.d/redis-server stop"
@@ -0,0 +1,7 @@
1
+ <%
2
+ @path = "/etc/sysctl.d/60-redis.conf"
3
+ @post = "/usr/sbin/service procps start"
4
+ %>
5
+
6
+ # allows redis to bgsave when memory is tight
7
+ vm.overcommit_memory=1
@@ -97,6 +97,11 @@ dbfilename dump.rdb
97
97
  # Note that you must specify a directory here, not a file name.
98
98
  dir <%= rubber_env.redis_db_dir %>
99
99
 
100
+ <%-
101
+ redis_master = rubber_instances.for_role('redis_master').first
102
+
103
+ if rubber_instances[rubber_env.host].role_names.include?('redis_slave')
104
+ %>
100
105
  ################################# REPLICATION #################################
101
106
 
102
107
  # Master-Slave replication. Use slaveof to make a Redis instance a copy of
@@ -106,12 +111,15 @@ dir <%= rubber_env.redis_db_dir %>
106
111
  #
107
112
  # slaveof <masterip> <masterport>
108
113
 
114
+ slaveof <%= redis_master.name %> 6379
115
+
109
116
  # If the master is password protected (using the "requirepass" configuration
110
117
  # directive below) it is possible to tell the slave to authenticate before
111
118
  # starting the replication synchronization process, otherwise the master will
112
119
  # refuse the slave request.
113
120
  #
114
121
  # masterauth <master-password>
122
+ <%- end %>
115
123
 
116
124
  ################################## SECURITY ###################################
117
125
 
@@ -4,6 +4,10 @@ redis_db_dir: /mnt/redis
4
4
 
5
5
  gems: [redis]
6
6
 
7
+ role_dependencies:
8
+ redis_master: [redis]
9
+ redis_slave: [redis]
10
+
7
11
  roles:
8
12
  redis:
9
13
  packages: [redis-server]
@@ -1,12 +1,12 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-resque_web.conf'
3
3
 
4
- PIDFILE = "/var/run/resque_web.pid"
5
- start_program = "HOME=/root resque-web --pid-file #{PIDFILE} --port #{rubber_env.resque_web_port} --no-launch #{RUBBER_ROOT}/config/initializers/resque.rb"
6
- stop_program = "HOME=/root resque-web --pid-file #{PIDFILE} --kill"
4
+ pidfile = "/var/run/resque_web.pid"
5
+ start_program = "HOME=/root resque-web --pid-file #{pidfile} --port #{rubber_env.resque_web_port} --no-launch #{RUBBER_ROOT}/config/initializers/resque.rb"
6
+ stop_program = "HOME=/root resque-web --pid-file #{pidfile} --kill"
7
7
  %>
8
8
 
9
- check process resque_web with pidfile <%= PIDFILE %>
9
+ check process resque_web with pidfile <%= pidfile %>
10
10
  group resque_web
11
11
  start program = "/bin/bash -l -c '<%= start_program %>'"
12
12
  stop program = "/bin/bash -l -c '<%= stop_program %>'"
@@ -4,13 +4,13 @@
4
4
 
5
5
  <% rubber_env.resque_workers.each_with_index do |worker, i| %>
6
6
  <%
7
- PIDFILE = "#{RUBBER_ROOT}/tmp/pids/resque_worker_#{i}.pid"
7
+ pidfile = "#{RUBBER_ROOT}/tmp/pids/resque_worker_#{i}.pid"
8
8
 
9
9
  start_program = "/usr/bin/sudo -H -u #{rubber_env.app_user} bash -l -c 'cd #{RUBBER_ROOT} && ./script/resque_worker_management.rb start #{i}'"
10
10
  stop_program = "/usr/bin/sudo -H -u #{rubber_env.app_user} bash -l -c 'cd #{RUBBER_ROOT} && ./script/resque_worker_management.rb stop #{i} TERM'"
11
11
  %>
12
12
 
13
- check process resque_worker_<%= i %> with pidfile <%= PIDFILE %>
13
+ check process resque_worker_<%= i %> with pidfile <%= pidfile %>
14
14
  group resque_worker
15
15
  start program = "<%= start_program %>"
16
16
  stop program = "<%= stop_program %>"
@@ -1,12 +1,12 @@
1
1
  <%
2
2
  @path = '/etc/monit/monit.d/monit-sphinx.conf'
3
3
 
4
- PIDFILE = "#{RUBBER_ROOT}/log/searchd.#{RUBBER_ENV}.pid"
4
+ pidfile = "#{RUBBER_ROOT}/log/searchd.#{RUBBER_ENV}.pid"
5
5
  start_program = "cd #{RUBBER_ROOT} && rake ts:start"
6
6
  stop_program = "cd #{RUBBER_ROOT} && rake ts:stop"
7
7
  %>
8
8
 
9
- check process sphinx with pidfile <%= PIDFILE %>
9
+ check process sphinx with pidfile <%= pidfile %>
10
10
  group sphinx-<%= RUBBER_ENV %>
11
11
  start program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> bash -l -c '<%= start_program %>'"
12
12
  stop program = "/usr/bin/sudo -H -u <%= rubber_env.app_user %> bash -l -c '<%= stop_program %>'"
@@ -243,11 +243,13 @@ module Rubber
243
243
  export RUBYLIB=/usr/lib/site_ruby/
244
244
  unset RUBYOPT
245
245
  nohup ec2-bundle-vol --batch -d /mnt -k #{ec2_pk_dest} -c #{ec2_cert_dest} -u #{@aws_env.account} -p #{image_name} -r #{arch} &> /tmp/ec2-bundle-vol.log &
246
+ sleep 1
247
+
246
248
  echo "Creating image from instance volume..."
247
249
  while true; do
248
250
  if ! ps ax | grep -q "[e]c2-bundle-vol"; then exit; fi
249
251
  echo -n .
250
- sleep 1
252
+ sleep 5
251
253
  done
252
254
  CMD
253
255
 
@@ -14,9 +14,14 @@ module Rubber
14
14
  @file = file
15
15
  @items = {}
16
16
  @artifacts = {'volumes' => {}, 'static_ips' => {}}
17
- if ENV['FILTER']
18
- @filters = ENV['FILTER'].split(/\s*,\s*/)
19
- end
17
+
18
+ @filters = ENV['FILTER'].split(/\s*,\s*/) rescue []
19
+ @filters, @filters_negated = @filters.partition {|f| f !~ /^-/ }
20
+ @filters_negated = @filters_negated.collect {|f| f[1..-1] }
21
+
22
+ @filter_roles = ENV['FILTER_ROLES'].split(/\s*,\s*/) rescue []
23
+ @filter_roles, @filter_roles_negated = @filter_roles.partition {|f| f !~ /^-/ }
24
+ @filter_roles_negated = @filter_roles_negated.collect {|f| f[1..-1] }
20
25
 
21
26
  if File.exist?(@file)
22
27
  item_list = File.open(@file) { |f| YAML.load(f) }
@@ -50,7 +55,21 @@ module Rubber
50
55
  end
51
56
 
52
57
  def filtered()
53
- @items.values.find_all {|ic| ! @filters || @filters.include?(ic.name)}
58
+ filtered_results = []
59
+
60
+ if @filters.size == 0 && @filter_roles.size == 0
61
+ filtered_results.concat(@items.values)
62
+ else
63
+ @items.values.each do |ic|
64
+ filtered_results << ic if @filters.include?(ic.name)
65
+ filtered_results << ic if ic.roles.any? {|r| @filter_roles.include?(r.name)}
66
+ end
67
+ end
68
+
69
+ filtered_results.delete_if {|ic| @filters_negated.include?(ic.name) }
70
+ filtered_results.delete_if {|ic| ic.roles.any? {|r| @filter_roles_negated.include?(r.name)} }
71
+
72
+ return filtered_results
54
73
  end
55
74
 
56
75
  def all_roles()
@@ -134,7 +134,14 @@ namespace :rubber do
134
134
  # logger.debug "Rule in sync: #{rule_map.inspect}"
135
135
  else
136
136
  # rules don't match, remove them from cloud and re-add below
137
- answer = Capistrano::CLI.ui.ask("Rule '#{rule_map.inspect}' exists in cloud, but not locally, remove from cloud? [y/N]?: ")
137
+ answer = nil
138
+ msg = "Rule '#{rule_map.inspect}' exists in cloud, but not locally"
139
+ if rubber_env.prompt_for_security_group_sync
140
+ answer = Capistrano::CLI.ui.ask("#{msg}, remove from cloud? [y/N]: ")
141
+ else
142
+ logger.info(msg)
143
+ end
144
+
138
145
  rule_map = Rubber::Util::symbolize_keys(rule_map)
139
146
  if rule_map[:source_group_name]
140
147
  cloud.remove_security_group_rule(group_name, nil, nil, nil, {:name => rule_map[:source_group_name], :account => rule_map[:source_group_account]})
@@ -160,7 +167,13 @@ namespace :rubber do
160
167
  end
161
168
  else
162
169
  # delete group
163
- answer = Capistrano::CLI.ui.ask("Security group '#{group_name}' exists in cloud but not locally, remove from cloud? [y/N]: ")
170
+ answer = nil
171
+ msg = "Security group '#{group_name}' exists in cloud but not locally"
172
+ if rubber_env.prompt_for_security_group_sync
173
+ answer = Capistrano::CLI.ui.ask("#{msg}, remove from cloud? [y/N]: ")
174
+ else
175
+ logger.debug(msg)
176
+ end
164
177
  cloud.destroy_security_group(group_name) if answer =~ /^y/
165
178
  end
166
179
  end
@@ -183,14 +183,15 @@ namespace :rubber do
183
183
  task :_zero_partitions, :hosts => ic.external_ip do
184
184
  rubber.sudo_script 'zero_partitions', <<-ENDSCRIPT
185
185
  # zero out parition for performance (see amazon DevGuide)
186
- echo "Zeroing out raid partitions to improve performance, this way take a while"
186
+ echo "Zeroing out raid partitions to improve performance, this may take a while"
187
187
  #{zero_script}
188
+ sleep 1
188
189
 
189
190
  echo "Waiting for partitions to zero out"
190
191
  while true; do
191
192
  if ! ps ax | grep -q "[d]d.*/dev/zero"; then exit; fi
192
193
  echo -n .
193
- sleep 1
194
+ sleep 5
194
195
  done
195
196
  ENDSCRIPT
196
197
  end
@@ -127,18 +127,11 @@ class EnvironmentTest < Test::Unit::TestCase
127
127
  end
128
128
 
129
129
  def test_instances_in_expansion
130
- instance = InstanceItem.new('host1', 'domain.com', [RoleItem.new('role1')], '')
131
- instance.external_ip = "1.2.3.4"
132
- instances = Instance.new(Tempfile.new('testforinstanceexpansion').path)
133
- instances.add(instance)
134
-
135
- File.expects(:exist?).returns(true)
136
- YAML.expects(:load_file).returns({'var1' =>'"#{rubber_instances.for_role("role1").first.external_ip}"'})
137
- Rubber::Configuration.expects(:rubber_instances).returns(instances)
138
- env = Rubber::Configuration::Environment.new(nil)
139
- e = env.bind()
140
-
141
- assert_equal "\"1.2.3.4\"", e['var1']
130
+ config = Rubber::Configuration::get_configuration('test', "#{File.dirname(__FILE__)}/fixtures/instance_expansion")
131
+ config.environment
132
+ e = config.environment.bind()
133
+ e.stubs(:rubber_instances).returns(config.instance)
134
+ assert_equal "50.1.1.1", e['var1']
142
135
  end
143
136
 
144
137
  end
@@ -25,9 +25,16 @@ class InstanceTest < Test::Unit::TestCase
25
25
  assert_equal @i4, @instance.for_role('role2', 'primary' => true).first, 'not finding correct instances for role'
26
26
  end
27
27
 
28
+ def test_unfiltered
29
+ ENV['FILTER'] = nil
30
+ ENV['FILTER_ROLES'] = nil
31
+ setup
32
+ assert_equal 4, @instance.filtered().size, 'should not filter for empty FILTER(_ROLES)'
33
+ end
34
+
35
+
28
36
  def test_filtered
29
- assert_equal 4, @instance.filtered().size, 'should not filter for empty FILTER'
30
-
37
+ ENV['FILTER_ROLES'] = nil
31
38
  ENV['FILTER'] = 'host1'
32
39
  setup
33
40
  assert_equal [@i1], @instance.filtered(), 'should have only filtered host'
@@ -35,7 +42,34 @@ class InstanceTest < Test::Unit::TestCase
35
42
  ENV['FILTER'] = 'host2 , host4'
36
43
  setup
37
44
  assert_equal [@i2, @i4], @instance.filtered(), 'should have only filtered hosts'
38
-
45
+
46
+ ENV['FILTER'] = '-host2'
47
+ setup
48
+ assert_equal [@i1, @i3, @i4], @instance.filtered(), 'should not have negated hosts'
49
+
50
+ ENV['FILTER'] = 'host1,host2,-host2'
51
+ setup
52
+ assert_equal [@i1], @instance.filtered(), 'should not have negated hosts'
53
+
54
+ ENV['FILTER'] = '-host1'
55
+ ENV['FILTER_ROLES'] = 'role1'
56
+ setup
57
+ assert_equal [@i2], @instance.filtered(), 'should not have negated roles'
58
+ end
59
+
60
+ def test_filtered_roles
61
+ ENV['FILTER'] = nil
62
+ ENV['FILTER_ROLES'] = 'role1'
63
+ setup
64
+ assert_equal [@i1, @i2], @instance.filtered(), 'should have only filtered roles'
65
+
66
+ ENV['FILTER_ROLES'] = 'role1 , role2'
67
+ setup
68
+ assert_equal [@i1, @i2, @i3, @i4], @instance.filtered(), 'should have only filtered roles'
69
+
70
+ ENV['FILTER_ROLES'] = '-role1'
71
+ setup
72
+ assert_equal [@i3, @i4], @instance.filtered(), 'should not have negated roles'
39
73
  end
40
74
 
41
75
  def test_equality
@@ -13,7 +13,7 @@ class ZerigoTest < Test::Unit::TestCase
13
13
  env = Rubber::Configuration::Environment::BoundEnv.new({'dns_providers' => {'zerigo' => {'email' => 'foo@bar.com', 'token' => 'testtoken'}}}, nil, nil)
14
14
  @dns = Rubber::Dns::Zerigo.new(env)
15
15
  FakeWeb.register_uri(:get,
16
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/zones.xml",
16
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/zones.xml",
17
17
  :body => fakeweb_fixture('zerigo/get_zones.xml'))
18
18
  @domain = "example1.com"
19
19
  @zone = ::Zerigo::DNS::Zone.find_or_create(@domain)
@@ -22,7 +22,7 @@ class ZerigoTest < Test::Unit::TestCase
22
22
  def test_find_records
23
23
  hosts_xml = fakeweb_fixture('zerigo/get_hosts.xml')
24
24
  FakeWeb.register_uri(:get,
25
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?zone_id=1",
25
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?zone_id=1",
26
26
  :body => hosts_xml)
27
27
  records = @dns.find_host_records(:host => '*', :domain => 'example1.com')
28
28
  assert_equal 2, records.size
@@ -32,7 +32,7 @@ class ZerigoTest < Test::Unit::TestCase
32
32
  doc.root.elements.delete(1)
33
33
  hosts_xml_single = doc.to_s
34
34
  FakeWeb.register_uri(:get,
35
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=example1.com&zone_id=1",
35
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=example1.com&zone_id=1",
36
36
  :body => hosts_xml_single)
37
37
  records = @dns.find_host_records(:host => '', :domain => 'example1.com')
38
38
  assert_equal 1, records.size
@@ -42,7 +42,7 @@ class ZerigoTest < Test::Unit::TestCase
42
42
  doc.root.elements.delete(2)
43
43
  hosts_xml_single = doc.to_s
44
44
  FakeWeb.register_uri(:get,
45
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
45
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
46
46
  :body => hosts_xml_single)
47
47
  records = @dns.find_host_records(:host => 'host1', :domain => 'example1.com')
48
48
  assert_equal 1, records.size
@@ -62,10 +62,10 @@ class ZerigoTest < Test::Unit::TestCase
62
62
  params = {:host => 'host1', :domain => 'example1.com'}
63
63
 
64
64
  FakeWeb.register_uri(:get,
65
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
65
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
66
66
  :body => fakeweb_fixture('zerigo/host1.xml'))
67
67
  FakeWeb.register_uri(:delete,
68
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts/1.xml",
68
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts/1.xml",
69
69
  :body => "")
70
70
 
71
71
  @dns.destroy_host_record(params)
@@ -76,10 +76,10 @@ class ZerigoTest < Test::Unit::TestCase
76
76
  new = {:host => 'host1', :domain => 'example1.com', :data => "1.1.1.2"}
77
77
 
78
78
  FakeWeb.register_uri(:get,
79
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
79
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts.xml?fqdn=host1.example1.com&zone_id=1",
80
80
  :body => fakeweb_fixture('zerigo/host1.xml'))
81
81
  FakeWeb.register_uri(:post,
82
- "http://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts/1.xml",
82
+ "https://foo%40bar.com:testtoken@ns.zerigo.com/api/1.1/hosts/1.xml",
83
83
  :body => "")
84
84
 
85
85
  @dns.update_host_record(params, new)
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubber
3
3
  version: !ruby/object:Gem::Version
4
- hash: 49
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 9
9
- - 1
10
- version: 1.9.1
4
+ prerelease:
5
+ version: 1.10.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - Matt Conway
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-01-26 00:00:00 -05:00
13
+ date: 2011-02-17 00:00:00 -05:00
19
14
  default_executable: vulcanize
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,11 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 31
30
- segments:
31
- - 2
32
- - 4
33
- - 0
34
24
  version: 2.4.0
35
25
  type: :runtime
36
26
  version_requirements: *id001
@@ -42,11 +32,6 @@ dependencies:
42
32
  requirements:
43
33
  - - ">="
44
34
  - !ruby/object:Gem::Version
45
- hash: 25
46
- segments:
47
- - 0
48
- - 9
49
- - 17
50
35
  version: 0.9.17
51
36
  type: :runtime
52
37
  version_requirements: *id002
@@ -58,9 +43,6 @@ dependencies:
58
43
  requirements:
59
44
  - - ">="
60
45
  - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
46
  version: "0"
65
47
  type: :runtime
66
48
  version_requirements: *id003
@@ -72,9 +54,6 @@ dependencies:
72
54
  requirements:
73
55
  - - ">="
74
56
  - !ruby/object:Gem::Version
75
- hash: 3
76
- segments:
77
- - 0
78
57
  version: "0"
79
58
  type: :runtime
80
59
  version_requirements: *id004
@@ -249,6 +228,7 @@ files:
249
228
  - generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb
250
229
  - generators/vulcanize/templates/redis/config/rubber/role/redis/crontab
251
230
  - generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf
231
+ - generators/vulcanize/templates/redis/config/rubber/role/redis/redis-sysctl.conf
252
232
  - generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf
253
233
  - generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml
254
234
  - generators/vulcanize/templates/redis/templates.yml
@@ -424,6 +404,7 @@ files:
424
404
  - lib/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb
425
405
  - lib/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab
426
406
  - lib/generators/vulcanize/templates/redis/config/rubber/role/redis/monit-redis.conf
407
+ - lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis-sysctl.conf
427
408
  - lib/generators/vulcanize/templates/redis/config/rubber/role/redis/redis.conf
428
409
  - lib/generators/vulcanize/templates/redis/config/rubber/rubber-redis.yml
429
410
  - lib/generators/vulcanize/templates/redis/templates.yml
@@ -484,20 +465,14 @@ has_rdoc: true
484
465
  homepage: http://github.com/wr0ngway/rubber
485
466
  licenses: []
486
467
 
487
- post_install_message: |+
488
-
489
- ********************************************************************************
490
-
491
- Thank you for installing rubber. Please note that this is a major upgrade
492
- and we've moved towards using RVM for Ruby configuration on your EC2 instances.
493
-
494
- If you're upgrading rubber, please make sure to read the upgrade notes and
495
- make the necessary configuration changes:
496
-
497
- http://wiki.github.com/wr0ngway/rubber/upgrading
498
-
499
- ********************************************************************************
500
-
468
+ post_install_message: "\n\
469
+ ********************************************************************************\n\n\
470
+ Thank you for installing rubber. Please note that this is a major upgrade\n\
471
+ and we've moved towards using RVM for Ruby configuration on your EC2 instances.\n\n\
472
+ If you're upgrading rubber, please make sure to read the upgrade notes and\n\
473
+ make the necessary configuration changes:\n\n\
474
+ http://wiki.github.com/wr0ngway/rubber/upgrading\n\n\
475
+ ********************************************************************************\n\n"
501
476
  rdoc_options: []
502
477
 
503
478
  require_paths:
@@ -507,23 +482,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
507
482
  requirements:
508
483
  - - ">="
509
484
  - !ruby/object:Gem::Version
510
- hash: 3
511
- segments:
512
- - 0
513
485
  version: "0"
514
486
  required_rubygems_version: !ruby/object:Gem::Requirement
515
487
  none: false
516
488
  requirements:
517
489
  - - ">="
518
490
  - !ruby/object:Gem::Version
519
- hash: 3
520
- segments:
521
- - 0
522
491
  version: "0"
523
492
  requirements: []
524
493
 
525
494
  rubyforge_project: rubber
526
- rubygems_version: 1.3.7
495
+ rubygems_version: 1.5.2
527
496
  signing_key:
528
497
  specification_version: 3
529
498
  summary: A capistrano plugin for managing multi-instance deployments to the cloud (ec2)