rubber 2.0.0.pre6 → 2.0.0.pre7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
1
  module Rubber
2
- VERSION = "2.0.0.pre6"
2
+ VERSION = "2.0.0.pre7"
3
3
  end
4
4
 
@@ -28,11 +28,11 @@ Gem::Specification.new do |s|
28
28
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
29
29
  s.require_paths = ["lib"]
30
30
 
31
- s.add_dependency 'capistrano', '>= 2.8.0'
31
+ s.add_dependency 'capistrano', '~> 2.8'
32
32
  s.add_dependency 'thor'
33
33
  s.add_dependency 'clamp'
34
34
  s.add_dependency 'open4'
35
- s.add_dependency 'fog', '>= 1.0.0'
35
+ s.add_dependency 'fog', '~> 1.2'
36
36
 
37
37
  s.add_development_dependency('rake')
38
38
  s.add_development_dependency('test-unit')
@@ -33,6 +33,15 @@ set :keep_releases, 3
33
33
  # the safety of forcing it to be checked in for production.
34
34
  set :push_instance_config, Rubber.env != 'production'
35
35
 
36
+ # don't waste time bundling gems that don't need to be there
37
+ set :bundle_without, [:development, :test, :staging] if Rubber.env == 'production'
38
+
39
+ # Allow us to do N hosts at a time for all tasks - useful when trying
40
+ # to figure out which host in a large set is down:
41
+ # RUBBER_ENV=production MAX_HOSTS=1 cap invoke COMMAND=hostname
42
+ max_hosts = ENV['MAX_HOSTS'].to_i
43
+ default_run_options[:max_hosts] = max_hosts if max_hosts > 0
44
+
36
45
  # Allows the tasks defined to fail gracefully if there are no hosts for them.
37
46
  # Comment out or use "required_task" for default cap behavior of a hard failure
38
47
  rubber.allow_optional_tasks(self)
@@ -65,7 +74,19 @@ Dir["#{File.dirname(__FILE__)}/rubber/deploy-*.rb"].each do |deploy_file|
65
74
  load deploy_file
66
75
  end
67
76
 
68
- after "deploy", "deploy:cleanup"
77
+ # capistrano's deploy:cleanup doesn't play well with FILTER
78
+ after "deploy", "cleanup"
79
+ after "deploy:migrations", "cleanup"
80
+ task :cleanup, :except => { :no_release => true } do
81
+ count = fetch(:keep_releases, 5).to_i
82
+
83
+ rsudo <<-CMD
84
+ all=$(ls -x1 #{releases_path} | sort -n);
85
+ keep=$(ls -x1 #{releases_path} | sort -n | tail -n #{count});
86
+ remove=$(comm -23 <(echo -e "$all") <(echo -e "$keep"));
87
+ for r in $remove; do rm -rf #{releases_path}/$r; done;
88
+ CMD
89
+ end
69
90
 
70
91
  if Rubber::Util.has_asset_pipeline?
71
92
  # load asset pipeline tasks, and reorder them to run after
@@ -75,7 +75,7 @@ namespace :rubber do
75
75
  if [[ "#{repository}" =~ "@" ]]; then
76
76
  # Get host key for src machine to prevent ssh from failing
77
77
  rm -f ~/.ssh/known_hosts
78
- ! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
78
+ ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null || true
79
79
  fi
80
80
  ENDSCRIPT
81
81
  end
@@ -0,0 +1,21 @@
1
+ <%
2
+ @path = '/etc/collectd/conf.d/collectd-ping.conf'
3
+
4
+ ping_hosts = []
5
+ if rubber_instances[rubber_env.host].role_names.include?('graphite_server')
6
+ # monitor all servers from graphite_server
7
+ ping_hosts = rubber_instances.collect {|ic| ic.full_name }.select {|h| h != rubber_env.full_host }
8
+ elsif rubber_instances[rubber_env.host].role_names.include?('web_tools')
9
+ # monitor just graphite_server from tools
10
+ ping_hosts = [rubber_instances.for_role('graphite_server').first.full_name]
11
+ end
12
+
13
+ @skip = (ping_hosts.size == 0)
14
+ %>
15
+
16
+ LoadPlugin ping
17
+ <Plugin "ping">
18
+ <% ping_hosts.each do |h| %>
19
+ Host "<%= h %>"
20
+ <% end %>
21
+ </Plugin>
@@ -64,28 +64,6 @@ LoadPlugin notify_email
64
64
 
65
65
  <% end %>
66
66
 
67
- <%
68
- ping_hosts = []
69
- if rubber_instances[rubber_env.host].role_names.include?('graphite_server')
70
- # monitor all servers from graphite_server
71
- ping_hosts = rubber_instances.collect {|ic| ic.full_name }.select {|h| h != rubber_env.full_host }
72
- elsif rubber_instances[rubber_env.host].role_names.include?('web_tools')
73
- # monitor just graphite_server from tools
74
- ping_hosts = [rubber_instances.for_role('graphite_server').first.full_name]
75
- end
76
- %>
77
-
78
- <% if ping_hosts.size > 0 %>
79
-
80
- LoadPlugin ping
81
- <Plugin "ping">
82
- <% ping_hosts.each do |h| %>
83
- Host "<%= h %>"
84
- <% end %>
85
- </Plugin>
86
-
87
- <% end %>
88
-
89
67
  Include "/etc/collectd/conf.d/*.conf"
90
68
  Include "/etc/collectd/thresholds.d/*.conf"
91
69
  Include "/etc/collectd/filters.d/*.conf"
@@ -1,6 +1,6 @@
1
1
  require "resque"
2
2
 
3
- redis_server = Rubber.instances.for_role('redis_slave').first.full_name rescue nil
3
+ redis_server = Rubber.instances.for_role('redis_master').first.full_name rescue nil
4
4
  redis_server ||= 'localhost' if Rubber.env == 'development'
5
5
  Resque.redis = "#{redis_server}:6379"
6
6
 
@@ -18,6 +18,9 @@ Listen <%= port %>
18
18
 
19
19
  SetEnvIf User-Agent "^(.*MSIE.*)|(.*AppleWebKit.*)$" nokeepalive
20
20
 
21
+ # Don't show haproxy checks in access log (see also apache2.conf)
22
+ SetEnvIf Request_URI "^/httpchk.txt$" dontlog
23
+
21
24
  RailsEnv <%= Rubber.env %>
22
25
 
23
26
  XSendFile on
@@ -74,6 +77,9 @@ Listen <%= port %>
74
77
  # SSLCertificateFile <%= Rubber.root %>/config/<%= rubber_env.domain %>.crt
75
78
  # SSLCertificateKeyFile <%= Rubber.root %>/config/<%= rubber_env.domain %>.key
76
79
  # SSLCertificateChainFile /etc/ssl/certs/gd_intermediate_bundle.crt
80
+
81
+ SSLHonorCipherOrder On
82
+ SSLCipherSuite ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM
77
83
  <% end %>
78
84
 
79
85
  </VirtualHost>
@@ -4,3 +4,4 @@
4
4
  %>
5
5
  kernel.shmmax=1610612736
6
6
  kernel.shmall=393216
7
+ kernel.sem=2500 320000 320 1280
@@ -489,7 +489,7 @@ autovacuum = on # Enable autovacuum subprocess? 'on'
489
489
  #statement_timeout = 0 # in milliseconds, 0 is disabled
490
490
  #vacuum_freeze_min_age = 50000000
491
491
  #vacuum_freeze_table_age = 150000000
492
- bytea_output = 'hex' # hex, escape
492
+ #bytea_output = 'hex' # hex, escape
493
493
  #xmlbinary = 'base64'
494
494
  #xmloption = 'content'
495
495
 
@@ -10,7 +10,7 @@ postgresql_synchronous_replication: false
10
10
 
11
11
  # REQUIRED: The command to use to do a full backup of your database using
12
12
  # "rubber util:backup_db"
13
- db_backup_cmd: "nice sudo -u postgres pg_dumpall -U postgres | gzip -c > %backup_file%"
13
+ db_backup_cmd: "set -e -o pipefail; nice sudo -u postgres pg_dumpall -U postgres | gzip -c > %backup_file%"
14
14
 
15
15
  # REQUIRED: The command to use to restore the database using
16
16
  # "rake util:restore_db"
@@ -7,14 +7,6 @@ resque_pool_pid_file: /var/run/resque-pool.pid
7
7
  #
8
8
  resque_worker_count: "#{Rubber.env == 'production' ? 4 : 2}"
9
9
 
10
- resque_workers:
11
- -
12
- queues: "*"
13
- poll_interval: 1
14
- -
15
- queues: "*"
16
- poll_interval: 1
17
-
18
10
  gems: [yajl-ruby, resque, resque-pool]
19
11
 
20
12
  web_tools_proxies:
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.0.0.pre6
4
+ version: 2.0.0.pre7
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,22 +10,22 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-08 00:00:00.000000000 Z
13
+ date: 2012-03-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: capistrano
17
- requirement: &11348280 !ruby/object:Gem::Requirement
17
+ requirement: &70150988668160 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ! '>='
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: 2.8.0
22
+ version: '2.8'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *11348280
25
+ version_requirements: *70150988668160
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: thor
28
- requirement: &11347860 !ruby/object:Gem::Requirement
28
+ requirement: &70150988678560 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *11347860
36
+ version_requirements: *70150988678560
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: clamp
39
- requirement: &11347400 !ruby/object:Gem::Requirement
39
+ requirement: &70150988675800 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *11347400
47
+ version_requirements: *70150988675800
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: open4
50
- requirement: &11346980 !ruby/object:Gem::Requirement
50
+ requirement: &70150988673100 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,21 +55,21 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *11346980
58
+ version_requirements: *70150988673100
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: fog
61
- requirement: &11346480 !ruby/object:Gem::Requirement
61
+ requirement: &70150988696320 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
- - - ! '>='
64
+ - - ~>
65
65
  - !ruby/object:Gem::Version
66
- version: 1.0.0
66
+ version: '1.2'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *11346480
69
+ version_requirements: *70150988696320
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
- requirement: &11346060 !ruby/object:Gem::Requirement
72
+ requirement: &70150988688640 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *11346060
80
+ version_requirements: *70150988688640
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: test-unit
83
- requirement: &11361900 !ruby/object:Gem::Requirement
83
+ requirement: &70150988696640 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *11361900
91
+ version_requirements: *70150988696640
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: shoulda-context
94
- requirement: &11361480 !ruby/object:Gem::Requirement
94
+ requirement: &70150988741240 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *11361480
102
+ version_requirements: *70150988741240
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: mocha
105
- requirement: &11361060 !ruby/object:Gem::Requirement
105
+ requirement: &70150988739720 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *11361060
113
+ version_requirements: *70150988739720
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: ruby-debug19
116
- requirement: &11360640 !ruby/object:Gem::Requirement
116
+ requirement: &70150988755820 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,7 +121,7 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *11360640
124
+ version_requirements: *70150988755820
125
125
  description: ! " The rubber plugin enables relatively complex multi-instance deployments
126
126
  of RubyOnRails applications to\n Amazon's Elastic Compute Cloud (EC2). Like
127
127
  capistrano, rubber is role based, so you can define a set\n of configuration
@@ -221,6 +221,7 @@ files:
221
221
  - templates/cassandra/config/rubber/rubber-cassandra.yml
222
222
  - templates/cassandra/templates.yml
223
223
  - templates/collectd/config/rubber/deploy-collectd.rb
224
+ - templates/collectd/config/rubber/role/collectd/collectd-ping.conf
224
225
  - templates/collectd/config/rubber/role/collectd/collectd.conf
225
226
  - templates/collectd/config/rubber/role/collectd/filters.conf
226
227
  - templates/collectd/config/rubber/role/collectd/thresholds.conf
@@ -236,9 +237,9 @@ files:
236
237
  - templates/collectd/script/collectd/role/examples/example_simple.rb
237
238
  - templates/collectd/script/collectd/role/postgresql_slave/replication_status.rb
238
239
  - templates/collectd/script/collectd/role/redis/redis_info.rb
239
- - templates/collectd/script/collectd/role/resque_worker/global_worker_stats.rb
240
240
  - templates/collectd/script/collectd/role/resque_worker/host_worker_stats.rb
241
- - templates/collectd/script/collectd/role/resque_worker/resque_jobs_processed.rb
241
+ - templates/collectd/script/collectd/role/web_tools/global_worker_stats.rb
242
+ - templates/collectd/script/collectd/role/web_tools/resque_jobs_processed.rb
242
243
  - templates/collectd/templates.yml
243
244
  - templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf
244
245
  - templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf
@@ -273,7 +274,6 @@ files:
273
274
  - templates/graphite/config/rubber/deploy-graphite.rb
274
275
  - templates/graphite/config/rubber/role/collectd/graphite-collectd.conf
275
276
  - templates/graphite/config/rubber/role/graphite_server/carbon.conf
276
- - templates/graphite/config/rubber/role/graphite_server/graphite-collectd-ping.conf
277
277
  - templates/graphite/config/rubber/role/graphite_server/graphite_server-upstart.conf
278
278
  - templates/graphite/config/rubber/role/graphite_server/storage-schemas.conf
279
279
  - templates/graphite/config/rubber/role/graphite_web/crontab
@@ -506,7 +506,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
506
506
  version: '0'
507
507
  segments:
508
508
  - 0
509
- hash: -3050976247343600522
509
+ hash: -4342084380980422767
510
510
  required_rubygems_version: !ruby/object:Gem::Requirement
511
511
  none: false
512
512
  requirements:
@@ -515,9 +515,43 @@ required_rubygems_version: !ruby/object:Gem::Requirement
515
515
  version: 1.3.1
516
516
  requirements: []
517
517
  rubyforge_project: rubber
518
- rubygems_version: 1.8.17
518
+ rubygems_version: 1.8.15
519
519
  signing_key:
520
520
  specification_version: 3
521
521
  summary: A capistrano plugin for managing multi-instance deployments to the cloud
522
522
  (ec2)
523
- test_files: []
523
+ test_files:
524
+ - test/cloud/aws_table_store_test.rb
525
+ - test/cloud/aws_test.rb
526
+ - test/cloud/fog_storage_test.rb
527
+ - test/cloud/fog_test.rb
528
+ - test/command_test.rb
529
+ - test/dns/fog_test.rb
530
+ - test/environment_test.rb
531
+ - test/fixtures/basic/common/bar.conf
532
+ - test/fixtures/basic/common/foo.conf
533
+ - test/fixtures/basic/host/host1/foo.conf
534
+ - test/fixtures/basic/host/host2/foo.conf
535
+ - test/fixtures/basic/role/role1/foo.conf
536
+ - test/fixtures/basic/role/role2/foo.conf
537
+ - test/fixtures/basic/rubber-extra.yml
538
+ - test/fixtures/basic/rubber.yml
539
+ - test/fixtures/expansion/rubber.yml
540
+ - test/fixtures/generator_order/common/a_first.conf
541
+ - test/fixtures/generator_order/common/z_last.conf
542
+ - test/fixtures/generator_order/host/host1/a_first.conf
543
+ - test/fixtures/generator_order/host/host1/z_last.conf
544
+ - test/fixtures/generator_order/role/role1/a_first.conf
545
+ - test/fixtures/generator_order/role/role1/z_last.conf
546
+ - test/fixtures/generator_order/role/role2/a_first.conf
547
+ - test/fixtures/generator_order/role/role2/z_last.conf
548
+ - test/fixtures/instance_expansion/instance-test.yml
549
+ - test/fixtures/instance_expansion/rubber.yml
550
+ - test/fixtures/nested/rubber.yml
551
+ - test/fixtures/secret/rubber.yml
552
+ - test/fixtures/secret/secret.yml
553
+ - test/generator_test.rb
554
+ - test/instance_test.rb
555
+ - test/test-rails-template.rb
556
+ - test/test_helper.rb
557
+ - test/util_test.rb
@@ -1,11 +0,0 @@
1
- <%
2
- @path = '/etc/collectd/conf.d/graphite-ping.conf'
3
- %>
4
-
5
- LoadPlugin ping
6
-
7
- <Plugin "ping">
8
- <% rubber_instances.each do |ic| %>
9
- Host "<%= ic.full_name %>"
10
- <% end %>
11
- </Plugin>