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.
- data/lib/rubber/version.rb +1 -1
- data/rubber.gemspec +2 -2
- data/templates/base/config/deploy.rb +22 -1
- data/templates/base/config/rubber/deploy-setup.rb +1 -1
- data/templates/collectd/config/rubber/role/collectd/collectd-ping.conf +21 -0
- data/templates/collectd/config/rubber/role/collectd/collectd.conf +0 -22
- data/templates/collectd/script/collectd/role/{resque_worker → web_tools}/global_worker_stats.rb +1 -1
- data/templates/collectd/script/collectd/role/{resque_worker → web_tools}/resque_jobs_processed.rb +0 -0
- data/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +6 -0
- data/templates/postgresql/config/rubber/role/db/postgresql-sysctl.conf +1 -0
- data/templates/postgresql/config/rubber/role/db/postgresql.conf +1 -1
- data/templates/postgresql/config/rubber/rubber-postgresql.yml +1 -1
- data/templates/resque/config/rubber/rubber-resque.yml +0 -8
- metadata +66 -32
- data/templates/graphite/config/rubber/role/graphite_server/graphite-collectd-ping.conf +0 -11
data/lib/rubber/version.rb
CHANGED
data/rubber.gemspec
CHANGED
@@ -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', '
|
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', '
|
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
|
-
|
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
|
-
|
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"
|
data/templates/collectd/script/collectd/role/{resque_worker → web_tools}/global_worker_stats.rb
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "resque"
|
2
2
|
|
3
|
-
redis_server = Rubber.instances.for_role('
|
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
|
|
data/templates/collectd/script/collectd/role/{resque_worker → web_tools}/resque_jobs_processed.rb
RENAMED
File without changes
|
@@ -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>
|
@@ -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.
|
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-
|
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: &
|
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
|
22
|
+
version: '2.8'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70150988668160
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: thor
|
28
|
-
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: *
|
36
|
+
version_requirements: *70150988678560
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: clamp
|
39
|
-
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: *
|
47
|
+
version_requirements: *70150988675800
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: open4
|
50
|
-
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: *
|
58
|
+
version_requirements: *70150988673100
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: fog
|
61
|
-
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.
|
66
|
+
version: '1.2'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70150988696320
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake
|
72
|
-
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: *
|
80
|
+
version_requirements: *70150988688640
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: test-unit
|
83
|
-
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: *
|
91
|
+
version_requirements: *70150988696640
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: shoulda-context
|
94
|
-
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: *
|
102
|
+
version_requirements: *70150988741240
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: mocha
|
105
|
-
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: *
|
113
|
+
version_requirements: *70150988739720
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: ruby-debug19
|
116
|
-
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: *
|
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/
|
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: -
|
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.
|
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
|