rubber 2.2.4 → 2.3.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG +46 -0
- data/lib/rubber/commands/config.rb +4 -2
- data/lib/rubber/commands/vulcanize.rb +1 -1
- data/lib/rubber/dns/base.rb +4 -0
- data/lib/rubber/recipes/rubber.rb +3 -3
- data/lib/rubber/recipes/rubber/utils.rb +3 -1
- data/lib/rubber/version.rb +1 -1
- data/rubber.gemspec +1 -1
- data/templates/base/config/deploy.rb +1 -0
- data/templates/base/config/rubber/rubber-ruby.yml +1 -1
- data/templates/base/config/rubber/rubber.yml +1 -1
- data/templates/collectd/config/rubber/deploy-collectd.rb +6 -0
- data/templates/elasticsearch/config/rubber/deploy-elasticsearch.rb +1 -1
- data/templates/graphite/config/rubber/deploy-graphite.rb +20 -5
- data/templates/memcached/config/rubber/deploy-memcached.rb +15 -0
- data/templates/memcached/config/rubber/role/memcached/crontab +8 -0
- data/templates/memcached/config/rubber/role/memcached/memcached.conf +1 -1
- data/templates/memcached/config/rubber/rubber-memcached.yml +2 -0
- data/templates/mongodb/config/rubber/deploy-mongodb.rb +11 -2
- data/templates/mongodb/config/rubber/role/mongodb/crontab +8 -0
- data/templates/monit/config/rubber/deploy-monit.rb +8 -1
- data/templates/mysql/config/rubber/rubber-mysql.yml +1 -1
- data/templates/nginx/config/rubber/deploy-nginx.rb +8 -1
- data/templates/nginx/config/rubber/role/nginx/crontab +1 -1
- data/templates/nginx/config/rubber/role/nginx/nginx.conf +4 -4
- data/templates/nginx/config/rubber/rubber-nginx.yml +2 -0
- data/templates/passenger_nginx/config/rubber/role/passenger_nginx/application.conf +1 -1
- data/templates/passenger_nginx/config/rubber/role/passenger_nginx/crontab +1 -1
- data/templates/passenger_nginx/config/rubber/role/passenger_nginx/nginx.conf +3 -3
- data/templates/passenger_nginx/config/rubber/rubber-passenger_nginx.yml +3 -3
- data/templates/percona/config/rubber/rubber-percona.yml +1 -1
- data/templates/redis/config/rubber/deploy-redis.rb +1 -1
- data/templates/redis/config/rubber/role/redis/redis.conf +261 -141
- data/templates/redis/config/rubber/rubber-redis.yml +1 -1
- data/templates/torquebox/config/rubber/deploy-torquebox.rb +1 -1
- data/templates/unicorn/config/rubber/deploy-unicorn.rb +8 -1
- metadata +102 -151
- data/templates/graphite/config/rubber/role/graphite_server/graphite-collectd-ping.conf +0 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: da3f085ebdc37b989578576bdb4a58416229704a
|
4
|
+
data.tar.gz: 121a3118cdf6321dc57b3408e7e549c8d5f17c25
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 15d26dc76976a8d1568e9dfdafd72a92d2bc670f97c75b62d77300811f8a66505d0c472bef0738e2f3bcb132fe7f83f2b17c6cd6f7242b3c4a4446be7bba883c
|
7
|
+
data.tar.gz: faf33dcca62169c86969185337761478654efdf6780a73477b25d7701fae0ef4d783f12e2447e1e25df4568909b52fc695f12c88e345fb65c8c1365d9885f53d
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,49 @@
|
|
1
|
+
2.3.0 (05/11/2013)
|
2
|
+
------------------
|
3
|
+
|
4
|
+
New Features:
|
5
|
+
============
|
6
|
+
|
7
|
+
[core] Added a --fakeroot option to rake rubber:config task to aid in debbugging rubber templates. <20e3fb0>
|
8
|
+
[collectd] Added a :status task to check the status of a remote service. <55f593a>
|
9
|
+
[graphite] Added a :status task to check the status of a remote service. <55f593a>
|
10
|
+
[memcached] Added a :status task to check the status of a remote service. <55f593a>
|
11
|
+
[mongodb] Added a :status task to check the status of a remote service. <55f593a>
|
12
|
+
[monit] Added a :status task to check the status of a remote service. <55f593a>
|
13
|
+
[nginx] Added a :status task to check the status of a remote service. <55f593a>
|
14
|
+
[unicorn] Added a :status task to check the status of a remote service. <55f593a>
|
15
|
+
|
16
|
+
Improvements:
|
17
|
+
============
|
18
|
+
|
19
|
+
[base] Upgraded from ruby-build 20130222 to 20130501. <4ea28f8>
|
20
|
+
[base] Configure Capistrano to compile assets on the `app` role, not the `web` one, in order to better match a typical Rubber project layout. <9c8096e>
|
21
|
+
[core] Allow customizing Capistrano config that rubber has traditionally taken ownership of. <ff69b52>
|
22
|
+
[graphite] Removed redundant ping check. <9950dc4>
|
23
|
+
[memcached] Added a rotate_logs cron job for memached. <f4d49ac>
|
24
|
+
[mongodb] Added a rotate_logs cron job for MongoDB. <b93665d>
|
25
|
+
[nginx] Allow configuration of the nginx log directory. <f4ef26f>
|
26
|
+
[nginx] Removed "text/html" from the gzip config to get rid of a warning message. <2429a7d>
|
27
|
+
[passenger_nginx] Upgraded to Passenger 3.0.19 and nginx 1.2.8. <48fd214, 9a8d81c>
|
28
|
+
[passenger_nginx] Added HTTP_X_QUEUE_START CGI param to work better with NewRelic. <48fd214>
|
29
|
+
[redis] Upgrade to redis 2.6.13 <9fb33e2>
|
30
|
+
|
31
|
+
Bug Fixes:
|
32
|
+
=========
|
33
|
+
|
34
|
+
[base] Fixed a typo in the cloud storage example configuration. <409137b>
|
35
|
+
[core] Honor the `host` option in the rubber:config rake task. <9477b8b>
|
36
|
+
[core] Fixed an issue with `symbolize_keys` and nested hashes that was resulting in broken MX record requests for Route 53. <13fdffd>
|
37
|
+
[core] Fixed an issue with vulcanizing multiple templates at once. <abca6e3>
|
38
|
+
[core] Fixed a problem with newer Capistrano/HighLine causing role names to be serialized incorrectly in an instance file. <9ea1fa6>
|
39
|
+
[elasticsearch] The upstart script lies about the service status, causing us to think the service is running when it isn't and thus preventing proper start up. <81aab0e>
|
40
|
+
[graphite] The upstart script lies about the service status, causing us to think the service is running when it isn't and thus preventing proper start up. <d92f077>
|
41
|
+
[mongodb] The upstart script lies about the service status, causing us to think the service is running when it isn't and thus preventing proper start up. <d92f077>
|
42
|
+
[mysql] Maatkit is now part of percona-tools, so our package name was outdated. <2e8d5f6>
|
43
|
+
[redis] The upstart script lies about the service status, causing us to think the service is running when it isn't and thus preventing proper start up. <d92f077>
|
44
|
+
[torquebox] The upstart script lies about the service status, causing us to think the service is running when it isn't and thus preventing proper start up. <d92f077>
|
45
|
+
|
46
|
+
|
1
47
|
2.2.4 (03/05/2013)
|
2
48
|
------------------
|
3
49
|
|
@@ -23,15 +23,17 @@ module Rubber
|
|
23
23
|
option ["--file", "-p"], "FILE", "Only generate files matching the given pattern"
|
24
24
|
option ["--no_post", "-n"], :flag, "Skip running post commands"
|
25
25
|
option ["--force", "-f"], :flag, "Overwrite files that already exist"
|
26
|
+
option ["--fakeroot", "-k"], "FAKEROOT", "Prefix generated files with fakeroot. Useful\nfor debugging with an environment and host"
|
26
27
|
|
27
28
|
def execute
|
28
29
|
cfg = Rubber::Configuration.get_configuration(Rubber.env)
|
29
|
-
instance_alias = cfg.environment.current_host
|
30
|
+
instance_alias = host || cfg.environment.current_host
|
30
31
|
instance = cfg.instance[instance_alias]
|
31
32
|
if instance
|
32
33
|
role_names = instance.role_names
|
33
34
|
env = cfg.environment.bind(role_names, instance_alias)
|
34
35
|
gen = Rubber::Configuration::Generator.new("#{Rubber.root}/config/rubber", role_names, instance_alias)
|
36
|
+
gen.fake_root = fakeroot if fakeroot
|
35
37
|
elsif ['development', 'test'].include?(Rubber.env)
|
36
38
|
instance_alias = host || instance_alias
|
37
39
|
role_names = roles || cfg.environment.known_roles
|
@@ -48,7 +50,7 @@ module Rubber
|
|
48
50
|
instance.internal_ip = "127.0.0.1"
|
49
51
|
cfg.instance.add(instance)
|
50
52
|
gen = Rubber::Configuration::Generator.new("#{Rubber.root}/config/rubber", role_names, instance_alias)
|
51
|
-
gen.fake_root ="#{Rubber.root}/tmp/rubber"
|
53
|
+
gen.fake_root = fakeroot || "#{Rubber.root}/tmp/rubber"
|
52
54
|
else
|
53
55
|
puts "Instance not found for host: #{instance_alias}"
|
54
56
|
exit 1
|
@@ -50,7 +50,7 @@ module Rubber
|
|
50
50
|
option ["-s", "--skip"], :flag, "Skip files that already exist"
|
51
51
|
|
52
52
|
parameter "TEMPLATE ...", "rubber template(s)" do |arg|
|
53
|
-
invalid = arg - VulcanizeThor.valid_templates
|
53
|
+
invalid = [arg].flatten - VulcanizeThor.valid_templates
|
54
54
|
if invalid.size == 0
|
55
55
|
arg
|
56
56
|
else
|
data/lib/rubber/dns/base.rb
CHANGED
@@ -68,6 +68,10 @@ module Rubber
|
|
68
68
|
actual_opts = default_opts.merge(Rubber::Util::symbolize_keys(opts))
|
69
69
|
end
|
70
70
|
|
71
|
+
if actual_opts.has_key?(:data) && actual_opts[:data].is_a?(Array) && actual_opts[:data].first.is_a?(Hash)
|
72
|
+
actual_opts[:data] = actual_opts[:data].collect { |x| Rubber::Util.symbolize_keys(x) }
|
73
|
+
end
|
74
|
+
|
71
75
|
required.each do |r|
|
72
76
|
raise "Missing required options: #{r}" unless actual_opts[r]
|
73
77
|
end
|
@@ -55,9 +55,9 @@ namespace :rubber do
|
|
55
55
|
# Disable connecting to any Windows instance.
|
56
56
|
# pass -l to bash in :shell to that run also gets full env
|
57
57
|
# use a pty so we don't get "stdin: is not a tty" error output
|
58
|
-
default_run_options[:pty] = true
|
59
|
-
default_run_options[:shell] = "/bin/bash -l"
|
60
|
-
default_run_options[:except]
|
58
|
+
default_run_options[:pty] = true if default_run_options[:pty].nil?
|
59
|
+
default_run_options[:shell] = "/bin/bash -l" if default_run_options[:shell].nil?
|
60
|
+
default_run_options[:except] ||= { :platform => 'windows' }
|
61
61
|
|
62
62
|
set :cloud, Rubber.cloud(self)
|
63
63
|
|
@@ -191,7 +191,9 @@ namespace :rubber do
|
|
191
191
|
value = Capistrano::CLI.ui.ask(msg) unless value
|
192
192
|
value = value.size == 0 ? default : value
|
193
193
|
fatal "#{name} is required, pass using environment or enter at prompt" if required && ! value
|
194
|
-
|
194
|
+
|
195
|
+
# Explicitly convert to a String to avoid weird serialization issues with Psych.
|
196
|
+
value.to_s
|
195
197
|
end
|
196
198
|
|
197
199
|
def fatal(msg, code=1)
|
data/lib/rubber/version.rb
CHANGED
data/rubber.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.authors = ["Matt Conway", "Kevin Menard"]
|
12
12
|
s.email = ["matt@conwaysplace.com", "nirvdrum@gmail.com"]
|
13
|
-
s.homepage = "
|
13
|
+
s.homepage = "https://github.com/rubber/rubber"
|
14
14
|
s.summary = "A capistrano plugin for managing multi-instance deployments to the cloud (ec2)"
|
15
15
|
s.description = <<-DESC
|
16
16
|
The rubber plugin enables relatively complex multi-instance deployments of RubyOnRails applications to
|
@@ -7,6 +7,7 @@ on :load do
|
|
7
7
|
set :runner, rubber_env.app_user
|
8
8
|
set :deploy_to, "/mnt/#{application}-#{Rubber.env}"
|
9
9
|
set :copy_exclude, [".git/*", ".bundle/*", "log/*", ".rvmrc", ".rbenv-version"]
|
10
|
+
set :assets_role, [:app]
|
10
11
|
end
|
11
12
|
|
12
13
|
# Use a simple directory tree copy here to make demo easier.
|
@@ -11,7 +11,7 @@
|
|
11
11
|
packages: [build-essential, git-core, subversion, curl, autoconf, bison, ruby, zlib1g-dev, libssl-dev, libreadline6-dev, libxml2-dev, libyaml-dev]
|
12
12
|
|
13
13
|
# REQUIRED: The version of ruby-build to use for building ruby.
|
14
|
-
ruby_build_version:
|
14
|
+
ruby_build_version: 20130501
|
15
15
|
|
16
16
|
# REQUIRED: Set to the version string for the ruby version you wish to use
|
17
17
|
# Run "ruby-build --definitions" to see the list of possible options
|
@@ -118,7 +118,7 @@ cloud_provider: aws
|
|
118
118
|
#
|
119
119
|
# Allowed forms are:
|
120
120
|
# filesystem: "file:#{Rubber.root}/config/rubber/instance-#{Rubber.env}.yml"
|
121
|
-
# cloud storage (s3): "storage:#{
|
121
|
+
# cloud storage (s3): "storage:#{cloud_providers.aws.backup_bucket}/RubberInstances_#{app_name}/instance-#{Rubber.env}.yml"
|
122
122
|
# cloud table (simpledb): "table:RubberInstances_#{app_name}_#{Rubber.env}"
|
123
123
|
#
|
124
124
|
# If you need to port between forms, load the rails console then:
|
@@ -43,6 +43,12 @@ namespace :rubber do
|
|
43
43
|
rsudo "pkill -fn #{rubber_env.rubber_collectd_runner.sub(/./, '[\0]')} ; exit 0"
|
44
44
|
end
|
45
45
|
|
46
|
+
desc "Display status of collectd system monitoring"
|
47
|
+
task :status, :roles => :collectd do
|
48
|
+
rsudo "service collectd status || true"
|
49
|
+
rsudo "ps -eopid,user,fname | grep [c]ollectd || true"
|
50
|
+
end
|
51
|
+
|
46
52
|
end
|
47
53
|
|
48
54
|
end
|
@@ -116,7 +116,7 @@ namespace :rubber do
|
|
116
116
|
|
117
117
|
desc "Start graphite system monitoring"
|
118
118
|
task :start, :roles => :graphite_server do
|
119
|
-
rsudo "service graphite-server
|
119
|
+
rsudo "service graphite-server start"
|
120
120
|
end
|
121
121
|
|
122
122
|
desc "Stop graphite system monitoring"
|
@@ -129,6 +129,14 @@ namespace :rubber do
|
|
129
129
|
stop
|
130
130
|
start
|
131
131
|
end
|
132
|
+
|
133
|
+
desc "Display status of graphite system monitoring"
|
134
|
+
task :status, :roles => :graphite_server do
|
135
|
+
rsudo "service graphite-server status || true"
|
136
|
+
rsudo "ps -eopid,user,cmd | grep [c]arbon || true"
|
137
|
+
rsudo "sudo netstat -tupln | grep [p]ython || true"
|
138
|
+
end
|
139
|
+
|
132
140
|
end
|
133
141
|
|
134
142
|
namespace :web do
|
@@ -189,22 +197,29 @@ EOF
|
|
189
197
|
end
|
190
198
|
end
|
191
199
|
|
192
|
-
desc "Start graphite
|
200
|
+
desc "Start graphite web server"
|
193
201
|
task :start, :roles => :graphite_web do
|
194
|
-
rsudo "service graphite-web
|
202
|
+
rsudo "service graphite-web start"
|
195
203
|
end
|
196
204
|
|
197
|
-
desc "Stop graphite
|
205
|
+
desc "Stop graphite web server"
|
198
206
|
task :stop, :roles => :graphite_web do
|
199
207
|
rsudo "service graphite-web stop || true"
|
200
208
|
end
|
201
209
|
|
202
|
-
desc "Restart graphite
|
210
|
+
desc "Restart graphite web server"
|
203
211
|
task :restart, :roles => :graphite_web do
|
204
212
|
stop
|
205
213
|
start
|
206
214
|
end
|
207
215
|
|
216
|
+
desc "Display status of graphite web server"
|
217
|
+
task :status, :roles => :graphite_web do
|
218
|
+
rsudo "service graphite-web status || true"
|
219
|
+
rsudo "ps -eopid,user,cmd | grep '[g]raphite/conf/uwsgi.ini' || true"
|
220
|
+
rsudo "netstat -tupln | grep uwsgi || true"
|
221
|
+
end
|
222
|
+
|
208
223
|
end
|
209
224
|
|
210
225
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
namespace :rubber do
|
3
|
+
|
4
|
+
namespace :memcached do
|
5
|
+
|
6
|
+
desc "Display status of memcached shared memory"
|
7
|
+
task :status, :roles => :memcached do
|
8
|
+
rsudo "service memcached status || true"
|
9
|
+
rsudo "ps -eopid,user,cmd | grep [m]emcached || true"
|
10
|
+
rsudo "netstat -tulpn | grep memcached || true"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%
|
2
|
+
@read_cmd = 'crontab -l'
|
3
|
+
@write_cmd = 'crontab -'
|
4
|
+
@additive = ["# rubber-memcached-start", "# rubber-memcached-end"]
|
5
|
+
%>
|
6
|
+
|
7
|
+
# Roll the memcached logs at midnight
|
8
|
+
0 0 * * * <%= Rubber.root %>/script/rubber cron --task util:rotate_logs --directory=<%= rubber_env.memcached_log_dir %>
|
@@ -33,7 +33,7 @@ namespace :rubber do
|
|
33
33
|
Starts the mongodb daemon
|
34
34
|
DESC
|
35
35
|
task :start, :roles => :mongodb do
|
36
|
-
rsudo "service mongodb
|
36
|
+
rsudo "service mongodb start"
|
37
37
|
end
|
38
38
|
|
39
39
|
desc <<-DESC
|
@@ -50,7 +50,16 @@ namespace :rubber do
|
|
50
50
|
stop
|
51
51
|
start
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
|
+
desc <<-DESC
|
55
|
+
Display status of the mongodb daemon
|
56
|
+
DESC
|
57
|
+
task :status, :roles => :mongodb do
|
58
|
+
rsudo "service mongodb status || true"
|
59
|
+
rsudo "ps -eopid,user,cmd | grep [m]ongod || true"
|
60
|
+
rsudo "netstat -tupan | grep mongod || true"
|
61
|
+
end
|
62
|
+
|
54
63
|
end
|
55
64
|
|
56
65
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%
|
2
|
+
@read_cmd = 'crontab -l'
|
3
|
+
@write_cmd = 'crontab -'
|
4
|
+
@additive = ["# rubber-mongodb-start", "# rubber-mongodb-end"]
|
5
|
+
%>
|
6
|
+
|
7
|
+
# Roll the mongodb logs at midnight
|
8
|
+
0 0 * * * <%= Rubber.root %>/script/rubber cron --task util:rotate_logs --directory=<%= rubber_env.mongodb_log_dir %>
|
@@ -27,7 +27,14 @@ namespace :rubber do
|
|
27
27
|
stop
|
28
28
|
start
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
|
+
desc "Display status of monit daemon monitoring"
|
32
|
+
task :status, :roles => :monit do
|
33
|
+
rsudo "service monit status || true"
|
34
|
+
rsudo "ps -eopid,user,fname | grep [m]onit || true"
|
35
|
+
rsudo "netstat -tulpn | grep monit || true"
|
36
|
+
end
|
37
|
+
|
31
38
|
end
|
32
39
|
|
33
40
|
end
|
@@ -52,7 +52,14 @@ namespace :rubber do
|
|
52
52
|
task :reload, :roles => :nginx do
|
53
53
|
serial_reload
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
|
+
desc "Display status of the nginx web server"
|
57
|
+
task :status, :roles => :nginx do
|
58
|
+
rsudo "service nginx status || true"
|
59
|
+
rsudo "ps -eopid,user,fname | grep [n]ginx || true"
|
60
|
+
rsudo "netstat -tulpn | grep nginx || true"
|
61
|
+
end
|
62
|
+
|
56
63
|
end
|
57
64
|
|
58
65
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<%
|
2
2
|
@path = "/etc/nginx/nginx.conf"
|
3
|
-
@post = "mkdir -p
|
3
|
+
@post = "mkdir -p #{rubber_env.nginx_log_dir}"
|
4
4
|
%>
|
5
5
|
|
6
6
|
user www-data;
|
@@ -26,7 +26,7 @@ http
|
|
26
26
|
gzip_http_version 1.0;
|
27
27
|
gzip_comp_level 2;
|
28
28
|
gzip_proxied any;
|
29
|
-
gzip_types text/plain text/
|
29
|
+
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
|
30
30
|
|
31
31
|
# configure log format like to Apache's "combined" log format
|
32
32
|
log_format main
|
@@ -35,8 +35,8 @@ http
|
|
35
35
|
'"$http_user_agent" "$http_cookie"';
|
36
36
|
|
37
37
|
# default log files
|
38
|
-
error_log
|
39
|
-
access_log
|
38
|
+
error_log <%= rubber_env.nginx_log_dir %>/error.log notice;
|
39
|
+
access_log <%= rubber_env.nginx_log_dir %>/access.log main;
|
40
40
|
|
41
41
|
include /etc/nginx/rubber/*.conf;
|
42
42
|
}
|