sml-rubber 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb +13 -7
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/deflate.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/expires.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/headers.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf +8 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf +5 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/{web → apache}/setenvif.conf +0 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf +62 -0
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth +7 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web_tools/index.html → apache/config/rubber/role/web_tools/tools-index.html} +8 -1
- data/generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml +4 -12
- data/generators/vulcanize/templates/base/config/deploy.rb +5 -34
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +4 -6
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +29 -3
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf +23 -0
- data/generators/vulcanize/templates/{nginx/config/rubber/role/web/nginx.conf → complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf} +25 -45
- data/generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml +41 -0
- data/generators/vulcanize/templates/{complete_mysql → complete_mongrel_mysql}/templates.yml +0 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf +19 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml +40 -0
- data/generators/vulcanize/templates/complete_passenger_mysql/templates.yml +3 -1
- data/generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb +8 -10
- data/generators/vulcanize/templates/cruise/config/rubber/role/web_tools/cruise-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf +26 -0
- data/generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf +1 -1
- data/generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml +0 -5
- data/generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb +7 -7
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/mongrel_cluster.yml +4 -4
- data/generators/vulcanize/templates/mongrel/config/rubber/role/{app → mongrel}/monit-mongrel.conf +2 -2
- data/generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml +2 -2
- data/generators/vulcanize/templates/monit/config/rubber/role/web_tools/monit-admin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb +17 -1
- data/generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf +1 -1
- data/generators/vulcanize/templates/munin/config/rubber/rubber-munin.yml +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/deploy-mysql.rb +14 -36
- data/generators/vulcanize/templates/mysql/config/rubber/role/db/monit-mysql.cnf +1 -1
- data/generators/vulcanize/templates/mysql/config/rubber/rubber-mysql.yml +8 -0
- data/generators/vulcanize/templates/mysql_cluster/config/rubber/deploy-mysql_cluster.rb +7 -7
- data/generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb +6 -6
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/crontab +0 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/{web → nginx}/monit-nginx.conf +0 -1
- data/generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf +42 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf +43 -62
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html +30 -0
- data/generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth +7 -0
- data/generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml +3 -26
- data/generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb +13 -40
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +6 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +47 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf +46 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf +10 -0
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +9 -11
- data/generators/vulcanize/templates/sphinx/config/rubber/deploy-sphinx.rb +1 -1
- data/lib/rubber/cloud/aws.rb +30 -0
- data/lib/rubber/instance.rb +53 -2
- data/lib/rubber/recipes/rubber.rb +7 -6
- data/lib/rubber/recipes/rubber/deploy.rb +22 -1
- data/lib/rubber/recipes/rubber/instances.rb +74 -24
- data/lib/rubber/recipes/rubber/load_balancers.rb +27 -0
- data/lib/rubber/recipes/rubber/security_groups.rb +5 -7
- data/lib/rubber/recipes/rubber/setup.rb +50 -14
- data/lib/rubber/recipes/rubber/static_ips.rb +7 -7
- data/lib/rubber/recipes/rubber/utils.rb +6 -7
- data/lib/rubber/recipes/rubber/volumes.rb +8 -8
- data/lib/rubber/util.rb +4 -0
- data/test/instance_test.rb +55 -0
- metadata +32 -18
- data/generators/vulcanize/templates/apache/config/rubber/role/web/vhost.conf +0 -27
- data/generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf +0 -44
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/passenger.conf +0 -8
- data/generators/vulcanize/templates/passenger/config/rubber/role/web/vhost.conf +0 -29
@@ -0,0 +1,27 @@
|
|
1
|
+
namespace :rubber do
|
2
|
+
|
3
|
+
desc <<-DESC
|
4
|
+
Sets up the network load balancers
|
5
|
+
DESC
|
6
|
+
required_task :setup_load_balancers do
|
7
|
+
setup_load_balancers()
|
8
|
+
end
|
9
|
+
|
10
|
+
desc <<-DESC
|
11
|
+
Describes the network load balancers
|
12
|
+
DESC
|
13
|
+
required_task :describe_load_balancers do
|
14
|
+
lbs = cloud.describe_load_balancers()
|
15
|
+
pp lbs
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup_load_balancers
|
19
|
+
# get remote lbs
|
20
|
+
# for each local not in remote, add it
|
21
|
+
# get all zones for all instances for roles, and make sure in lb
|
22
|
+
# warn if lb not balanced (count of instances per zone is equal)
|
23
|
+
# for each local that is in remote, sync listeners and zones
|
24
|
+
# for each remote not in local, remove it
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -45,8 +45,8 @@ namespace :rubber do
|
|
45
45
|
env = rubber_cfg.environment.bind(roles, host)
|
46
46
|
security_group_defns = env.security_groups
|
47
47
|
if env.auto_security_groups
|
48
|
-
sghosts = (
|
49
|
-
sgroles = (
|
48
|
+
sghosts = (rubber_instances.collect{|ic| ic.name } + [host]).uniq.compact
|
49
|
+
sgroles = (rubber_instances.all_roles + roles).uniq.compact
|
50
50
|
security_group_defns = inject_auto_security_groups(security_group_defns, sghosts, sgroles)
|
51
51
|
sync_security_groups(security_group_defns)
|
52
52
|
else
|
@@ -67,8 +67,7 @@ namespace :rubber do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def isolate_prefix
|
70
|
-
|
71
|
-
return "#{env.app_name}_#{RUBBER_ENV}_"
|
70
|
+
return "#{rubber_env.app_name}_#{RUBBER_ENV}_"
|
72
71
|
end
|
73
72
|
|
74
73
|
def isolate_group_name(group_name)
|
@@ -93,11 +92,10 @@ namespace :rubber do
|
|
93
92
|
end
|
94
93
|
|
95
94
|
def sync_security_groups(groups)
|
96
|
-
env = rubber_cfg.environment.bind()
|
97
95
|
return unless groups
|
98
96
|
|
99
97
|
groups = Rubber::Util::stringify(groups)
|
100
|
-
groups = isolate_groups(groups) if
|
98
|
+
groups = isolate_groups(groups) if rubber_env.isolate_security_groups
|
101
99
|
group_keys = groups.keys.clone()
|
102
100
|
|
103
101
|
# For each group that does already exist in ec2
|
@@ -106,7 +104,7 @@ namespace :rubber do
|
|
106
104
|
group_name = cloud_group[:name]
|
107
105
|
|
108
106
|
# skip those groups that don't belong to this project/env
|
109
|
-
next if
|
107
|
+
next if rubber_env.isolate_security_groups && group_name !~ /^#{isolate_prefix}/
|
110
108
|
|
111
109
|
if group_keys.delete(group_name)
|
112
110
|
# sync rules
|
@@ -9,7 +9,7 @@ namespace :rubber do
|
|
9
9
|
upgrade_packages
|
10
10
|
install_packages
|
11
11
|
setup_volumes
|
12
|
-
|
12
|
+
setup_gem_sources
|
13
13
|
install_gems
|
14
14
|
deploy.setup
|
15
15
|
end
|
@@ -33,10 +33,9 @@ namespace :rubber do
|
|
33
33
|
hosts_file = '/etc/hosts'
|
34
34
|
|
35
35
|
# Generate /etc/hosts contents for the local machine from instance config
|
36
|
-
|
37
|
-
delim = "## rubber config #{env.domain} #{RUBBER_ENV}"
|
36
|
+
delim = "## rubber config #{rubber_env.domain} #{RUBBER_ENV}"
|
38
37
|
local_hosts = delim + "\n"
|
39
|
-
|
38
|
+
rubber_instances.each do |ic|
|
40
39
|
# don't add unqualified hostname in local hosts file since user may be
|
41
40
|
# managing multiple domains with same aliases
|
42
41
|
hosts_data = [ic.full_name, ic.external_host, ic.internal_host].join(' ')
|
@@ -57,7 +56,7 @@ namespace :rubber do
|
|
57
56
|
Sets up aliases in dynamic dns provider for instance hostnames based on contents of instance.yml.
|
58
57
|
DESC
|
59
58
|
required_task :setup_dns_aliases do
|
60
|
-
|
59
|
+
rubber_instances.each do |ic|
|
61
60
|
update_dyndns(ic)
|
62
61
|
end
|
63
62
|
end
|
@@ -73,12 +72,12 @@ namespace :rubber do
|
|
73
72
|
delim = "## rubber config"
|
74
73
|
delim = "#{delim} #{RUBBER_ENV}"
|
75
74
|
remote_hosts = delim + "\n"
|
76
|
-
|
75
|
+
rubber_instances.each do |ic|
|
77
76
|
hosts_data = [ic.name, ic.full_name, ic.external_host, ic.internal_host].join(' ')
|
78
77
|
remote_hosts << ic.internal_ip << ' ' << hosts_data << "\n"
|
79
78
|
end
|
80
79
|
remote_hosts << delim << "\n"
|
81
|
-
if
|
80
|
+
if rubber_instances.size > 0
|
82
81
|
# write out the hosts file for the remote instances
|
83
82
|
# NOTE that we use "capture" to get the existing hosts
|
84
83
|
# file, which only grabs the hosts file from the first host
|
@@ -127,7 +126,7 @@ namespace :rubber do
|
|
127
126
|
end
|
128
127
|
|
129
128
|
desc <<-DESC
|
130
|
-
Install
|
129
|
+
Install Ubuntu packages. Set 'packages' in rubber.yml to \
|
131
130
|
be an array of strings.
|
132
131
|
DESC
|
133
132
|
task :install_packages do
|
@@ -135,7 +134,7 @@ namespace :rubber do
|
|
135
134
|
end
|
136
135
|
|
137
136
|
desc <<-DESC
|
138
|
-
Install
|
137
|
+
Install ruby gems. Set 'gems' in rubber.yml to \
|
139
138
|
be an array of strings.
|
140
139
|
DESC
|
141
140
|
task :install_gems do
|
@@ -143,13 +142,50 @@ namespace :rubber do
|
|
143
142
|
end
|
144
143
|
|
145
144
|
desc <<-DESC
|
146
|
-
|
145
|
+
Install ruby gems defined in the rails environment.rb
|
146
|
+
DESC
|
147
|
+
after "deploy:symlink", "rubber:install_rails_gems" if Rubber::Util.is_rails?
|
148
|
+
task :install_rails_gems do
|
149
|
+
sudo "sh -c 'cd #{current_path} && RAILS_ENV=#{RUBBER_ENV} rake gems:install'"
|
150
|
+
end
|
151
|
+
|
152
|
+
desc <<-DESC
|
153
|
+
Setup ruby gems sources. Set 'gemsources' in rubber.yml to \
|
147
154
|
be an array of URI strings.
|
148
155
|
DESC
|
149
|
-
task :
|
150
|
-
|
151
|
-
|
152
|
-
|
156
|
+
task :setup_gem_sources do
|
157
|
+
if rubber_env.gemsources
|
158
|
+
script = prepare_script 'gem_sources_helper', <<-'ENDSCRIPT'
|
159
|
+
ruby - $@ <<-'EOF'
|
160
|
+
|
161
|
+
sources = ARGV
|
162
|
+
|
163
|
+
installed = []
|
164
|
+
`gem sources -l`.grep(/^[^*]/) do |line|
|
165
|
+
line = line.strip
|
166
|
+
installed << line if line.size > 0
|
167
|
+
end
|
168
|
+
|
169
|
+
to_install = sources - installed
|
170
|
+
to_remove = installed - sources
|
171
|
+
|
172
|
+
if to_install.size > 0
|
173
|
+
to_install.each do |source|
|
174
|
+
system "gem sources -a #{source}"
|
175
|
+
fail "Unable to add gem sources" if $?.exitstatus > 0
|
176
|
+
end
|
177
|
+
end
|
178
|
+
if to_remove.size > 0
|
179
|
+
to_remove.each do |source|
|
180
|
+
system "gem sources -r #{source}"
|
181
|
+
fail "Unable to remove gem sources" if $?.exitstatus > 0
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
'EOF'
|
186
|
+
ENDSCRIPT
|
187
|
+
|
188
|
+
sudo "sh #{script} #{rubber_env.gemsources.join(' ')}"
|
153
189
|
end
|
154
190
|
end
|
155
191
|
|
@@ -5,10 +5,10 @@ namespace :rubber do
|
|
5
5
|
Sets up static IPs for the instances configured to have them
|
6
6
|
DESC
|
7
7
|
required_task :setup_static_ips do
|
8
|
-
|
8
|
+
rubber_instances.each do |ic|
|
9
9
|
env = rubber_cfg.environment.bind(ic.role_names, ic.name)
|
10
10
|
if env.use_static_ip
|
11
|
-
artifacts =
|
11
|
+
artifacts = rubber_instances.artifacts
|
12
12
|
ip = artifacts['static_ips'][ic.name] rescue nil
|
13
13
|
|
14
14
|
# first allocate the static ip if we don't have a global record (artifacts) for it
|
@@ -16,7 +16,7 @@ namespace :rubber do
|
|
16
16
|
logger.info "Allocating static IP for #{ic.full_name}"
|
17
17
|
ip = allocate_static_ip()
|
18
18
|
artifacts['static_ips'][ic.name] = ip
|
19
|
-
|
19
|
+
rubber_instances.save
|
20
20
|
end
|
21
21
|
|
22
22
|
# then, associate it if we don't have a record (on instance) of association
|
@@ -29,7 +29,7 @@ namespace :rubber do
|
|
29
29
|
ic.internal_host = instance[:internal_host]
|
30
30
|
ic.external_ip = ip
|
31
31
|
ic.static_ip = ip
|
32
|
-
|
32
|
+
rubber_instances.save()
|
33
33
|
|
34
34
|
logger.info "Waiting for static ip to associate"
|
35
35
|
while true do
|
@@ -96,12 +96,12 @@ namespace :rubber do
|
|
96
96
|
cloud.destroy_static_ip(ip) rescue logger.info("IP was not attached")
|
97
97
|
|
98
98
|
logger.info "Removing ip #{ip} from rubber instances file"
|
99
|
-
artifacts =
|
99
|
+
artifacts = rubber_instances.artifacts
|
100
100
|
artifacts['static_ips'].delete_if {|k,v| v == ip}
|
101
|
-
|
101
|
+
rubber_instances.each do |ic|
|
102
102
|
ic.static_ip = nil if ic.static_ip == ip
|
103
103
|
end
|
104
|
-
|
104
|
+
rubber_instances.save
|
105
105
|
end
|
106
106
|
|
107
107
|
end
|
@@ -8,12 +8,12 @@ namespace :rubber do
|
|
8
8
|
e.g. RUBBER_ENV=matt cap create_staging
|
9
9
|
DESC
|
10
10
|
required_task :create_staging do
|
11
|
-
if
|
11
|
+
if rubber_instances.size > 0
|
12
12
|
value = Capistrano::CLI.ui.ask("The #{RUBBER_ENV} environment already has instances, Are you SURE you want to create a staging instance that may interact with them [y/N]?: ")
|
13
13
|
fatal("Exiting", 0) if value !~ /^y/
|
14
14
|
end
|
15
15
|
instance_alias = ENV['ALIAS'] = rubber.get_env("ALIAS", "Hostname to use for staging instance", true, RUBBER_ENV)
|
16
|
-
default_roles =
|
16
|
+
default_roles = rubber_env.staging_roles || "*"
|
17
17
|
roles = ENV['ROLES'] = rubber.get_env("ROLES", "Roles to use for staging instance", true, default_roles)
|
18
18
|
|
19
19
|
# some bootstraps update code (bootstrap_db) but if you don't have that role, need to do it here
|
@@ -24,7 +24,7 @@ namespace :rubber do
|
|
24
24
|
set :rubber_code_was_updated, true
|
25
25
|
end
|
26
26
|
|
27
|
-
if
|
27
|
+
if rubber_instances[instance_alias]
|
28
28
|
logger.info "Instance already exists, skipping to bootstrap"
|
29
29
|
else
|
30
30
|
rubber.create
|
@@ -134,7 +134,7 @@ namespace :rubber do
|
|
134
134
|
|
135
135
|
def find_alias(ip, instance_id, do_connect=true)
|
136
136
|
if instance_id
|
137
|
-
instance =
|
137
|
+
instance = rubber_instances.find {|i| i.instance_id == instance_id }
|
138
138
|
local_alias = instance.full_name if instance
|
139
139
|
end
|
140
140
|
local_alias ||= File.read("/etc/hosts").grep(/#{ip}/).first.split[1] rescue nil
|
@@ -150,8 +150,7 @@ namespace :rubber do
|
|
150
150
|
def prepare_script(name, contents)
|
151
151
|
script = "/tmp/#{name}"
|
152
152
|
# this lets us abort a script if a command in the middle of it errors out
|
153
|
-
|
154
|
-
contents = "#{env.stop_on_error_cmd}\n#{contents}" if env.stop_on_error_cmd
|
153
|
+
contents = "#{rubber_env.stop_on_error_cmd}\n#{contents}" if rubber_env.stop_on_error_cmd
|
155
154
|
put(contents, script)
|
156
155
|
return script
|
157
156
|
end
|
@@ -188,7 +187,7 @@ namespace :rubber do
|
|
188
187
|
# be installed.
|
189
188
|
def get_host_options(cfg_name, &block)
|
190
189
|
opts = {}
|
191
|
-
|
190
|
+
rubber_instances.each do | ic|
|
192
191
|
env = rubber_cfg.environment.bind(ic.role_names, ic.name)
|
193
192
|
cfg_value = env[cfg_name]
|
194
193
|
if cfg_value
|
@@ -5,7 +5,7 @@ namespace :rubber do
|
|
5
5
|
All volumes defined in rubber.yml will be created if neccessary, and attached/mounted on their associated instances
|
6
6
|
DESC
|
7
7
|
required_task :setup_volumes do
|
8
|
-
|
8
|
+
rubber_instances.filtered.each do |ic|
|
9
9
|
env = rubber_cfg.environment.bind(ic.role_names, ic.name)
|
10
10
|
created_vols = []
|
11
11
|
vol_specs = env.volumes || []
|
@@ -71,7 +71,7 @@ namespace :rubber do
|
|
71
71
|
def setup_volume(ic, vol_spec)
|
72
72
|
created = nil
|
73
73
|
key = "#{ic.name}_#{vol_spec['device']}"
|
74
|
-
artifacts =
|
74
|
+
artifacts = rubber_instances.artifacts
|
75
75
|
vol_id = artifacts['volumes'][key]
|
76
76
|
|
77
77
|
# first create the volume if we don't have a global record (artifacts) for it
|
@@ -79,7 +79,7 @@ namespace :rubber do
|
|
79
79
|
logger.info "Creating volume for #{ic.full_name}:#{vol_spec['device']}"
|
80
80
|
vol_id = create_volume(vol_spec['size'], vol_spec['zone'])
|
81
81
|
artifacts['volumes'][key] = vol_id
|
82
|
-
|
82
|
+
rubber_instances.save
|
83
83
|
created = vol_spec['device']
|
84
84
|
end
|
85
85
|
|
@@ -89,7 +89,7 @@ namespace :rubber do
|
|
89
89
|
logger.info "Attaching volume #{vol_id} to #{ic.full_name}:#{vol_spec['device']}"
|
90
90
|
attach_volume(vol_id, ic.instance_id, vol_spec['device'])
|
91
91
|
ic.volumes << vol_id
|
92
|
-
|
92
|
+
rubber_instances.save
|
93
93
|
|
94
94
|
print "Waiting for volume to attach"
|
95
95
|
while true do
|
@@ -151,7 +151,7 @@ namespace :rubber do
|
|
151
151
|
_setup_partition
|
152
152
|
|
153
153
|
ic.partitions << part_id
|
154
|
-
|
154
|
+
rubber_instances.save
|
155
155
|
created = part_id
|
156
156
|
|
157
157
|
end
|
@@ -253,12 +253,12 @@ namespace :rubber do
|
|
253
253
|
cloud.destroy_volume(volume_id)
|
254
254
|
|
255
255
|
logger.info "Removing volume #{volume_id} from rubber instances file"
|
256
|
-
artifacts =
|
256
|
+
artifacts = rubber_instances.artifacts
|
257
257
|
artifacts['volumes'].delete_if {|k,v| v == volume_id}
|
258
|
-
|
258
|
+
rubber_instances.each do |ic|
|
259
259
|
ic.volumes.delete(volume_id) if ic.volumes
|
260
260
|
end
|
261
|
-
|
261
|
+
rubber_instances.save
|
262
262
|
end
|
263
263
|
|
264
264
|
end
|
data/lib/rubber/util.rb
CHANGED
data/test/instance_test.rb
CHANGED
@@ -35,4 +35,59 @@ class InstanceTest < Test::Unit::TestCase
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
+
def test_equality
|
39
|
+
assert RoleItem.new('a').eql?(RoleItem.new('a'))
|
40
|
+
assert RoleItem.new('a') == RoleItem.new('a')
|
41
|
+
assert_equal RoleItem.new('a').hash, RoleItem.new('a').hash
|
42
|
+
|
43
|
+
assert ! RoleItem.new('a').eql?(RoleItem.new('b'))
|
44
|
+
assert RoleItem.new('a') != RoleItem.new('b')
|
45
|
+
assert_not_equal RoleItem.new('a').hash, RoleItem.new('b').hash
|
46
|
+
|
47
|
+
assert RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 1 => true}))
|
48
|
+
assert RoleItem.new('a', {'a' => 'b', 1 => true}) == RoleItem.new('a', {'a' => 'b', 1 => true})
|
49
|
+
assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 1 => true}).hash
|
50
|
+
|
51
|
+
assert ! RoleItem.new('a', {'a' => 'b', 1 => true}).eql?(RoleItem.new('a', {'a' => 'b', 2 => true}))
|
52
|
+
assert RoleItem.new('a', {'a' => 'b', 1 => true}) != RoleItem.new('a', {'a' => 'b', 2 => true})
|
53
|
+
assert_equal RoleItem.new('a', {'a' => 'b', 1 => true}).hash, RoleItem.new('a', {'a' => 'b', 2 => true}).hash
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_role_parse
|
57
|
+
assert_equal RoleItem.new('a'), RoleItem.parse("a")
|
58
|
+
assert_equal RoleItem.new('a', {'b' => 'c'}), RoleItem.parse("a:b=c")
|
59
|
+
assert_equal RoleItem.new('a', {'b' => 'c', 'd' => 'e'}), RoleItem.parse("a:b=c;d=e")
|
60
|
+
assert_equal RoleItem.new('a', {'b' => true, 'c' => false}), RoleItem.parse("a:b=true;c=false")
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_role_to_s
|
64
|
+
assert_equal "a", RoleItem.new('a').to_s
|
65
|
+
assert_equal "a:b=c", RoleItem.new('a', {'b' => 'c'}).to_s
|
66
|
+
assert_equal "a:b=c;d=e", RoleItem.new('a', {'b' => 'c', 'd' => 'e'}).to_s
|
67
|
+
assert_equal "a:b=true;c=false", RoleItem.new('a', {'b' => true, 'c' => false}).to_s
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_expand_role_dependencies
|
71
|
+
deps = { RoleItem.new('a') => RoleItem.new('b'),
|
72
|
+
RoleItem.new('b') => RoleItem.new('c'),
|
73
|
+
RoleItem.new('c') => [RoleItem.new('d'), RoleItem.new('a')]}
|
74
|
+
roles = [RoleItem.new('a'),RoleItem.new('b'),RoleItem.new('c'),RoleItem.new('d')]
|
75
|
+
assert_equal roles, RoleItem.expand_role_dependencies(RoleItem.new('a'), deps).sort
|
76
|
+
assert_equal roles, RoleItem.expand_role_dependencies([RoleItem.new('a'), RoleItem.new('d')], deps).sort
|
77
|
+
|
78
|
+
deps = { RoleItem.new('mysql_master') => RoleItem.new('db', {'primary' => true}),
|
79
|
+
RoleItem.new('mysql_slave') => RoleItem.new('db'),
|
80
|
+
RoleItem.new('db', {'primary' => true}) => RoleItem.new('mysql_master'),
|
81
|
+
RoleItem.new('db') => RoleItem.new('mysql_slave')
|
82
|
+
}
|
83
|
+
assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
|
84
|
+
RoleItem.expand_role_dependencies(RoleItem.new('mysql_master'), deps).sort
|
85
|
+
assert_equal [RoleItem.new('db', 'primary' => true), RoleItem.new('mysql_master')],
|
86
|
+
RoleItem.expand_role_dependencies(RoleItem.new('db', 'primary' => true), deps).sort
|
87
|
+
assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
|
88
|
+
RoleItem.expand_role_dependencies(RoleItem.new('mysql_slave'), deps).sort
|
89
|
+
assert_equal [RoleItem.new('db'), RoleItem.new('mysql_slave')],
|
90
|
+
RoleItem.expand_role_dependencies(RoleItem.new('db'), deps).sort
|
91
|
+
|
92
|
+
end
|
38
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sml-rubber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-15 00:00:00 -07:00
|
13
13
|
default_executable: vulcanize
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -88,11 +88,15 @@ files:
|
|
88
88
|
- bin/vulcanize
|
89
89
|
- generators/vulcanize/USAGE
|
90
90
|
- generators/vulcanize/templates/apache/config/rubber/deploy-apache.rb
|
91
|
-
- generators/vulcanize/templates/apache/config/rubber/role/
|
92
|
-
- generators/vulcanize/templates/apache/config/rubber/role/
|
93
|
-
- generators/vulcanize/templates/apache/config/rubber/role/
|
94
|
-
- generators/vulcanize/templates/apache/config/rubber/role/
|
95
|
-
- generators/vulcanize/templates/apache/config/rubber/role/
|
91
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/deflate.conf
|
92
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/expires.conf
|
93
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/headers.conf
|
94
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/monit-apache.conf
|
95
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/ports.conf
|
96
|
+
- generators/vulcanize/templates/apache/config/rubber/role/apache/setenvif.conf
|
97
|
+
- generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache-vhost.conf
|
98
|
+
- generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-apache.auth
|
99
|
+
- generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html
|
96
100
|
- generators/vulcanize/templates/apache/config/rubber/rubber-apache.yml
|
97
101
|
- generators/vulcanize/templates/apache/templates.yml
|
98
102
|
- generators/vulcanize/templates/base/Capfile
|
@@ -106,7 +110,12 @@ files:
|
|
106
110
|
- generators/vulcanize/templates/base/script/cron-runner
|
107
111
|
- generators/vulcanize/templates/base/script/cron-sh
|
108
112
|
- generators/vulcanize/templates/base/templates.yml
|
109
|
-
- generators/vulcanize/templates/
|
113
|
+
- generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/haproxy/haproxy-mongrel.conf
|
114
|
+
- generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/role/nginx/nginx-mongrel.conf
|
115
|
+
- generators/vulcanize/templates/complete_mongrel_mysql/config/rubber/rubber-complete.yml
|
116
|
+
- generators/vulcanize/templates/complete_mongrel_mysql/templates.yml
|
117
|
+
- generators/vulcanize/templates/complete_passenger_mysql/config/rubber/role/haproxy/haproxy-passenger.conf
|
118
|
+
- generators/vulcanize/templates/complete_passenger_mysql/config/rubber/rubber-complete.yml
|
110
119
|
- generators/vulcanize/templates/complete_passenger_mysql/templates.yml
|
111
120
|
- generators/vulcanize/templates/cruise/config/rubber/deploy-cruise.rb
|
112
121
|
- generators/vulcanize/templates/cruise/config/rubber/role/cruise/cruise
|
@@ -117,8 +126,8 @@ files:
|
|
117
126
|
- generators/vulcanize/templates/cruise/config/rubber/rubber-cruise.yml
|
118
127
|
- generators/vulcanize/templates/cruise/templates.yml
|
119
128
|
- generators/vulcanize/templates/haproxy/config/rubber/deploy-haproxy.rb
|
129
|
+
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-base.conf
|
120
130
|
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy-default.conf
|
121
|
-
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/haproxy.conf
|
122
131
|
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/monit-haproxy.conf
|
123
132
|
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslog-haproxy.conf
|
124
133
|
- generators/vulcanize/templates/haproxy/config/rubber/role/haproxy/syslogd-default.conf
|
@@ -134,8 +143,8 @@ files:
|
|
134
143
|
- generators/vulcanize/templates/minimal_mysql/templates.yml
|
135
144
|
- generators/vulcanize/templates/minimal_nodb/templates.yml
|
136
145
|
- generators/vulcanize/templates/mongrel/config/rubber/deploy-mongrel.rb
|
137
|
-
- generators/vulcanize/templates/mongrel/config/rubber/role/
|
138
|
-
- generators/vulcanize/templates/mongrel/config/rubber/role/
|
146
|
+
- generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/mongrel_cluster.yml
|
147
|
+
- generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf
|
139
148
|
- generators/vulcanize/templates/mongrel/config/rubber/rubber-mongrel.yml
|
140
149
|
- generators/vulcanize/templates/mongrel/templates.yml
|
141
150
|
- generators/vulcanize/templates/monit/config/rubber/common/monit-default.conf
|
@@ -179,16 +188,19 @@ files:
|
|
179
188
|
- generators/vulcanize/templates/mysql_proxy/config/rubber/rubber-mysql_proxy.yml
|
180
189
|
- generators/vulcanize/templates/mysql_proxy/templates.yml
|
181
190
|
- generators/vulcanize/templates/nginx/config/rubber/deploy-nginx.rb
|
182
|
-
- generators/vulcanize/templates/nginx/config/rubber/role/
|
183
|
-
- generators/vulcanize/templates/nginx/config/rubber/role/
|
184
|
-
- generators/vulcanize/templates/nginx/config/rubber/role/
|
185
|
-
- generators/vulcanize/templates/nginx/config/rubber/role/web_tools/index.html
|
191
|
+
- generators/vulcanize/templates/nginx/config/rubber/role/nginx/crontab
|
192
|
+
- generators/vulcanize/templates/nginx/config/rubber/role/nginx/monit-nginx.conf
|
193
|
+
- generators/vulcanize/templates/nginx/config/rubber/role/nginx/nginx.conf
|
186
194
|
- generators/vulcanize/templates/nginx/config/rubber/role/web_tools/nginx-tools.conf
|
195
|
+
- generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-index.html
|
196
|
+
- generators/vulcanize/templates/nginx/config/rubber/role/web_tools/tools-nginx.auth
|
187
197
|
- generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml
|
188
198
|
- generators/vulcanize/templates/nginx/templates.yml
|
189
199
|
- generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb
|
190
|
-
- generators/vulcanize/templates/passenger/config/rubber/role/
|
191
|
-
- generators/vulcanize/templates/passenger/config/rubber/role/
|
200
|
+
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf
|
201
|
+
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf
|
202
|
+
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf
|
203
|
+
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger.conf
|
192
204
|
- generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml
|
193
205
|
- generators/vulcanize/templates/passenger/templates.yml
|
194
206
|
- generators/vulcanize/templates/sphinx/config/rubber/common/sphinx.yml
|
@@ -217,6 +229,7 @@ files:
|
|
217
229
|
- lib/rubber/recipes/rubber/bundles.rb
|
218
230
|
- lib/rubber/recipes/rubber/deploy.rb
|
219
231
|
- lib/rubber/recipes/rubber/instances.rb
|
232
|
+
- lib/rubber/recipes/rubber/load_balancers.rb
|
220
233
|
- lib/rubber/recipes/rubber/security_groups.rb
|
221
234
|
- lib/rubber/recipes/rubber/setup.rb
|
222
235
|
- lib/rubber/recipes/rubber/static_ips.rb
|
@@ -226,6 +239,7 @@ files:
|
|
226
239
|
- lib/rubber/util.rb
|
227
240
|
has_rdoc: false
|
228
241
|
homepage: http://github.com/wr0ngway/rubber
|
242
|
+
licenses:
|
229
243
|
post_install_message:
|
230
244
|
rdoc_options:
|
231
245
|
- --charset=UTF-8
|
@@ -246,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
260
|
requirements: []
|
247
261
|
|
248
262
|
rubyforge_project: rubber
|
249
|
-
rubygems_version: 1.
|
263
|
+
rubygems_version: 1.3.5
|
250
264
|
signing_key:
|
251
265
|
specification_version: 3
|
252
266
|
summary: A capistrano plugin for managing multi-instance deployments to the cloud (ec2)
|