rubber 2.6.1 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +26 -1
  3. data/lib/capistrano/thread_safety_fix.rb +30 -0
  4. data/lib/rubber/cloud/digital_ocean.rb +2 -2
  5. data/lib/rubber/recipes/rubber/volumes.rb +9 -1
  6. data/lib/rubber/recipes/rubber.rb +1 -0
  7. data/lib/rubber/version.rb +1 -1
  8. data/templates/base/config/rubber/rubber.yml +1 -1
  9. data/templates/cassandra/config/rubber/role/cassandra/monit-cassandra.conf +1 -1
  10. data/templates/graphite/config/rubber/role/graphite_server/monit-graphite_server.conf +1 -1
  11. data/templates/memcached/config/rubber/role/memcached/memcached.conf +3 -3
  12. data/templates/memcached/config/rubber/rubber-memcached.yml +1 -0
  13. data/templates/monit/config/rubber/role/cassandra/monit-cassandra.conf +1 -1
  14. data/templates/monit/config/rubber/role/elasticsearch/monit-elasticsearch.conf +1 -1
  15. data/templates/monit/config/rubber/role/graphite_server/monit-graphite_server.conf +1 -1
  16. data/templates/monit/config/rubber/role/graylog_server/monit-graylog_server.conf +1 -1
  17. data/templates/monit/config/rubber/role/graylog_web/monit-graylog_web.conf +1 -1
  18. data/templates/monit/config/rubber/role/jetty/monit-jetty.conf +1 -1
  19. data/templates/monit/config/rubber/role/mongrel/monit-mongrel.conf +1 -1
  20. data/templates/monit/config/rubber/role/redis/monit-redis.conf +1 -1
  21. data/templates/monit/config/rubber/role/sphinx/monit-sphinx.conf +1 -1
  22. data/templates/torquebox/config/rubber/role/torquebox/monit-torquebox.conf +1 -1
  23. data/templates/zookeeper/config/rubber/role/zookeeper/monit-zookeeper.conf +1 -1
  24. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec73202ff7ae4b8b7141a4628e7ab7d4b5e3d628
4
- data.tar.gz: 1ed2f951bbd777e967b53185dd8fed1ae3692e5f
3
+ metadata.gz: f897442ad924496abcf7f3beeabfb592b0b5c7e9
4
+ data.tar.gz: e62e8386658cc1a20a8f32e0efa7113813b0166b
5
5
  SHA512:
6
- metadata.gz: 040dedab057535bbb42a545bd2c77569153c7317530a8f118b879eef54596c74f6a619ba65cf1eced96b89a60bd6416d04f058e3a10f4520f2931f72712be9f7
7
- data.tar.gz: b746357fc5923292cbd90fce4c05358598708caa33079f95a1509914ccd5367631ca9da9207b7bb14f694b2f9625cf09dfbb658317d35874d73a98c680134ae4
6
+ metadata.gz: d0dc0cd057ce461ee16d32d12c970c756cc9dd343e4f8e2861e08a1657131cba3777fe4449edcb964a5862caa8c445eca7f4e772bed94e3251290c9324fed2d2
7
+ data.tar.gz: 377e5688e2c403a57aee8c29de42057a679d31771f192bea842e46dd5f0d13f69439a29e478da8daacbd97ed45aaf6027fdb22e5ed85984e1fc64fd8f9a2b9dd
data/CHANGELOG CHANGED
@@ -1,3 +1,28 @@
1
+ 2.6.2 (11/07/2013)
2
+
3
+ Improvements:
4
+ ============
5
+
6
+ [memcached] Added configuration of max memcached memory size through rubber var 'memcached_max_mem'. <ba28c39>
7
+ [cassandra] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
8
+ [graphite] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
9
+ [elasticsearch] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
10
+ [graylog] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
11
+ [jetty] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
12
+ [mongrel] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
13
+ [redis] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
14
+ [sphinx] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
15
+ [torquebox] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
16
+ [zookeeper] Quote all `rubber_env.host` in Monit config template in case hostname conflicts with monit keyword. <61bd9b1>
17
+
18
+ Bug Fixes:
19
+ =========
20
+
21
+ [base] Fixed unknown method 'known_roles' when running create_staging. <44167c4>
22
+ [core] Fixed ip_address deprecation for digital ocean.
23
+ [core] Fixed a thread safety issue in Capistrano via a monkey-patch. <f3f9086>
24
+
25
+
1
26
  2.6.1 (11/06/2013)
2
27
 
3
28
  Improvements:
@@ -23,7 +48,7 @@ Improvements:
23
48
  ============
24
49
 
25
50
  [base] Upgraded to ruby-build 20131030 <214423d>
26
- [base] Enhances database.yml to respond to active environment, not just 'production' <3843caf>
51
+ [base] Enhances database.yml to respond to active environment, not just 'production' <3843caf>
27
52
 
28
53
 
29
54
  2.5.5 (10/16/2013)
@@ -0,0 +1,30 @@
1
+ require 'capistrano/configuration'
2
+
3
+ # Overrides a method in Capistrano::Configurations::Connections that has multiple threads writing to a shared hash.
4
+ # While that shared hash is a thread local variable, they the thread is passed as an argument, so all the connection
5
+ # threads are trying to update it at the same time. This has been observed to cause problems where servers will end
6
+ # up losing their connection objects, messing up all future SSH operations and eventually leading to an error about
7
+ # calling a method on a nil object.
8
+ #
9
+ # We shouldn't make a habit of patching Capistrano in Rubber. But since Capistrano 2.x is effectively a dead project,
10
+ # getting this fixed upstream is extremely unlikely.
11
+
12
+ module Capistrano
13
+ class Configuration
14
+ private
15
+
16
+ MUTEX = Mutex.new
17
+
18
+ def safely_establish_connection_to(server, thread, failures=nil)
19
+ conn = connection_factory.connect_to(server)
20
+
21
+ MUTEX.synchronize do
22
+ thread[:sessions] ||= {}
23
+ thread[:sessions][server] ||= conn
24
+ end
25
+ rescue Exception => err
26
+ raise unless failures
27
+ failures << { :server => server, :error => err }
28
+ end
29
+ end
30
+ end
@@ -79,8 +79,8 @@ module Rubber
79
79
  instance[:id] = item.id
80
80
  instance[:state] = item.state
81
81
  instance[:type] = item.flavor_id
82
- instance[:external_ip] = item.ip_address
83
- instance[:internal_ip] = item.ip_address
82
+ instance[:external_ip] = item.public_ip_address
83
+ instance[:internal_ip] = item.public_ip_address
84
84
  instance[:region_id] = item.region_id
85
85
  instance[:provider] = 'digital_ocean'
86
86
  instance[:platform] = 'linux'
@@ -41,7 +41,15 @@ namespace :rubber do
41
41
 
42
42
  # The act of setting up volumes might blow away previously deployed code, so reset the update state so it can
43
43
  # be deployed again if needed.
44
- set :rubber_code_was_updated, false
44
+ deploy_to = fetch(:deploy_to, nil)
45
+
46
+ unless deploy_to.nil?
47
+ deployed = capture("echo $(ls /var/run/reboot-required 2> /dev/null)")
48
+
49
+ unless deployed
50
+ set :rubber_code_was_updated, false
51
+ end
52
+ end
45
53
  end
46
54
 
47
55
  desc <<-DESC
@@ -5,6 +5,7 @@ require "socket"
5
5
  require 'resolv'
6
6
  require 'enumerator'
7
7
  require 'capistrano/hostcmd'
8
+ require 'capistrano/thread_safety_fix'
8
9
  require 'pp'
9
10
  require 'rubber'
10
11
 
@@ -1,3 +1,3 @@
1
1
  module Rubber
2
- VERSION = "2.6.1"
2
+ VERSION = "2.6.2"
3
3
  end
@@ -266,7 +266,7 @@ stop_on_error_cmd: "function error_exit { exit 99; }; trap error_exit ERR"
266
266
  #
267
267
  # staging_roles: "web,app,db:primary=true"
268
268
  # Auto detect staging roles
269
- staging_roles: "#{rubber_env.known_roles.reject {|r| r =~ /slave/ || r =~ /^db$/ }.join(',')}"
269
+ staging_roles: "#{known_roles.reject {|r| r =~ /slave/ || r =~ /^db$/ }.join(',')}"
270
270
 
271
271
  # OPTIONAL: Lets one assign amazon elastic IPs (static IPs) to your instances
272
272
  # You should typically set this on the role/host level rather than
@@ -7,7 +7,7 @@ check process cassandra with pidfile <%= rubber_env.cassandra_pid_file %>
7
7
  group cassandra-<%= Rubber.env %>
8
8
  start program = "<%= rubber_env.cassandra_dir %>/bin/cassandra -p <%= rubber_env.cassandra_pid_file %>"
9
9
  stop program = "/bin/bash -l -c 'kill `cat <%= rubber_env.cassandra_pid_file %>`'"
10
- #if failed host <%= rubber_env.host %> port <%= rubber_env.cassandra_rpc_port %> with timeout 10 seconds for 10 cycles then restart
10
+ #if failed host "<%= rubber_env.host %>" port <%= rubber_env.cassandra_rpc_port %> with timeout 10 seconds for 10 cycles then restart
11
11
 
12
12
  <% if Rubber.env == 'production' %>
13
13
  check filesystem commitlog_lv with path /mnt/cassandra/commitlog
@@ -5,4 +5,4 @@ check process graphite_server with pidfile <%= rubber_env.graphite_server_pid_fi
5
5
  group graphite-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service graphite-server start"
7
7
  stop program = "/usr/bin/env service graphite-server stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.graphite_server_port %> with timeout 10 seconds for 3 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.graphite_server_port %> with timeout 10 seconds for 3 cycles then restart
@@ -6,7 +6,7 @@
6
6
  # memcached default config file edited for mobicious
7
7
  # 2003 - Jay Bonci <jaybonci@debian.org>
8
8
  # This configuration file is read by the start-memcached script provided as
9
- # part of the Debian GNU/Linux distribution.
9
+ # part of the Debian GNU/Linux distribution.
10
10
 
11
11
  # Run memcached as a daemon. This command is implied, and is not needed for the
12
12
  # daemon to run. See the README.Debian that comes with this package for more
@@ -25,10 +25,10 @@ logfile <%= rubber_env.memcached_log_dir %>/memcached.log
25
25
  # Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
26
26
  # Note that the daemon will grow to this size, but does not start out holding this much
27
27
  # memory
28
- -m 64
28
+ -m <%= rubber_env.memcached_max_mem %>
29
29
 
30
30
  # Default connection port is 11211
31
- -p 11211
31
+ -p 11211
32
32
 
33
33
  # Run the daemon as root. The start-memcached will default to running as root if no
34
34
  # -u command is present in this config file
@@ -1,6 +1,7 @@
1
1
  # Sets up memcached server and client as dalli
2
2
 
3
3
  memcached_log_dir: /var/log/memcached
4
+ memcached_max_mem: 64
4
5
 
5
6
  gems: [dalli]
6
7
 
@@ -5,4 +5,4 @@ check process cassandra with pidfile <%= rubber_env.cassandra_pid_file %>
5
5
  group cassandra-<%= Rubber.env %>
6
6
  start program = "<%= rubber_env.cassandra_dir %>/bin/cassandra -p <%= rubber_env.cassandra_pid_file %>"
7
7
  stop program = "kill `cat <%= rubber_env.cassandra_pid_file %>`"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.cassandra_rpc_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.cassandra_rpc_port %> with timeout 10 seconds for 10 cycles then restart
@@ -5,4 +5,4 @@ check process elasticsearch with pidfile <%= rubber_env.elasticsearch_pid_file %
5
5
  group elasticsearch-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service elasticsearch start"
7
7
  stop program = "/usr/bin/env service elasticsearch stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.elasticsearch_http_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.elasticsearch_http_port %> with timeout 10 seconds for 10 cycles then restart
@@ -5,4 +5,4 @@ check process graphite_server with pidfile <%= rubber_env.graphite_server_pid_fi
5
5
  group graphite-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service graphite-server start"
7
7
  stop program = "/usr/bin/env service graphite-server stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.graphite_server_port %> with timeout 10 seconds for 3 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.graphite_server_port %> with timeout 10 seconds for 3 cycles then restart
@@ -5,4 +5,4 @@ check process graylog_server with pidfile <%= rubber_env.graylog_server_pid_file
5
5
  group graylog-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service graylog-server start"
7
7
  stop program = "/usr/bin/env service graylog-server stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.graylog_server_port %> type UDP with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.graylog_server_port %> type UDP with timeout 10 seconds for 10 cycles then restart
@@ -5,4 +5,4 @@ check process graylog_web with pidfile <%= rubber_env.graylog_web_pid_file %>
5
5
  group graylog-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service graylog-web start"
7
7
  stop program = "/usr/bin/env service graylog-web stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.graylog_web_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.graylog_web_port %> with timeout 10 seconds for 10 cycles then restart
@@ -5,4 +5,4 @@ check process jetty with pidfile /var/run/jetty.pid
5
5
  group jetty-<%= Rubber.env %>
6
6
  start program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh start"
7
7
  stop program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.jetty_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.jetty_port %> with timeout 10 seconds for 10 cycles then restart
@@ -16,5 +16,5 @@
16
16
  stop program = "/bin/sh -c 'cd <%= Rubber.root %> && PATH=/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 %>
@@ -5,4 +5,4 @@ check process redis with pidfile <%= rubber_env.redis_server_pid_file %>
5
5
  group redis-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service redis-server start"
7
7
  stop program = "/usr/bin/env service redis-server stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.redis_server_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.redis_server_port %> with timeout 10 seconds for 10 cycles then restart
@@ -10,4 +10,4 @@ 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 %>'"
13
- if failed host <%= rubber_env.host %> port 9312 with timeout 5 seconds for 5 cycles then restart
13
+ if failed host "<%= rubber_env.host %>" port 9312 with timeout 5 seconds for 5 cycles then restart
@@ -5,4 +5,4 @@ check process torquebox with pidfile <%= rubber_env.torquebox_pid_file %>
5
5
  group torquebox-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service torquebox start"
7
7
  stop program = "/usr/bin/env service torquebox stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.torquebox_http_port %> with timeout 10 seconds for 20 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.torquebox_http_port %> with timeout 10 seconds for 20 cycles then restart
@@ -5,4 +5,4 @@ check process zookeeper with pidfile <%= rubber_env.zookeeper_pid_file %>
5
5
  group zookeeper-<%= Rubber.env %>
6
6
  start program = "/usr/bin/env service zookeeper start"
7
7
  stop program = "/usr/bin/env service zookeeper stop"
8
- if failed host <%= rubber_env.host %> port <%= rubber_env.zookeeper_client_port %> with timeout 10 seconds for 10 cycles then restart
8
+ if failed host "<%= rubber_env.host %>" port <%= rubber_env.zookeeper_client_port %> with timeout 10 seconds for 10 cycles then restart
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubber
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 2.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Conway
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-06 00:00:00.000000000 Z
12
+ date: 2013-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
@@ -205,6 +205,7 @@ files:
205
205
  - TODO
206
206
  - bin/rubber
207
207
  - lib/capistrano/hostcmd.rb
208
+ - lib/capistrano/thread_safety_fix.rb
208
209
  - lib/rubber.rb
209
210
  - lib/rubber/capistrano.rb
210
211
  - lib/rubber/cli.rb