rubber 2.0.0.pre2 → 2.0.0.pre3
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.
- data/lib/rubber/recipes/rubber/setup.rb +2 -2
- data/lib/rubber/recipes/rubber/volumes.rb +30 -18
- data/lib/rubber/version.rb +1 -1
- data/templates/base/config/rubber/rubber-rvm.yml +1 -1
- data/templates/base/config/rubber/rubber.yml +10 -1
- data/templates/mysql/config/rubber/role/db/apparmor-mysql.conf +2 -2
- data/test/cloud/fog_storage_test.rb +1 -1
- metadata +23 -23
@@ -408,7 +408,7 @@ namespace :rubber do
|
|
408
408
|
# graphite web app)
|
409
409
|
if instance_item.role_names.include?('web_tools')
|
410
410
|
Array(rubber_env.web_tools_proxies).each do |name, settings|
|
411
|
-
provider.update("#{name}.#{
|
411
|
+
provider.update("#{name}.#{instance_item.full_name}", instance_item.external_ip)
|
412
412
|
end
|
413
413
|
end
|
414
414
|
end
|
@@ -426,7 +426,7 @@ namespace :rubber do
|
|
426
426
|
# graphite web app)
|
427
427
|
if instance_item.role_names.include?('web_tools')
|
428
428
|
Array(rubber_env.web_tools_proxies).each do |name, settings|
|
429
|
-
provider.destroy("#{name}.#{
|
429
|
+
provider.destroy("#{name}.#{instance_item.full_name}")
|
430
430
|
end
|
431
431
|
end
|
432
432
|
end
|
@@ -25,11 +25,12 @@ namespace :rubber do
|
|
25
25
|
|
26
26
|
created_vols = created_vols.compact.uniq
|
27
27
|
raid_specs = env.raid_volumes || []
|
28
|
+
raid_volume_list = raid_specs.collect {|vol| vol["source_devices"]}.join(" ")
|
28
29
|
raid_specs.each do |raid_spec|
|
29
30
|
# we want to format if we created the ec2 volumes, or if we don't have any
|
30
31
|
# ec2 volumes and are just creating raid array from ephemeral stores
|
31
|
-
format = raid_spec['source_devices'].all? {|dev| created_vols.include?(dev)}
|
32
|
-
setup_raid_volume(ic, raid_spec, format)
|
32
|
+
format = raid_spec['source_devices'].all? {|dev| created_vols.include?(dev.gsub("xv","s"))}
|
33
|
+
setup_raid_volume(ic, raid_spec, format, raid_volume_list)
|
33
34
|
end
|
34
35
|
|
35
36
|
lvm_volume_group_specs = env.lvm_volume_groups || []
|
@@ -109,11 +110,7 @@ namespace :rubber do
|
|
109
110
|
print "."
|
110
111
|
sleep 2
|
111
112
|
volume = cloud.describe_volumes(vol_id).first
|
112
|
-
if volume[:attachment_status] == "attached"
|
113
|
-
print "."
|
114
|
-
sleep 2
|
115
|
-
break
|
116
|
-
end
|
113
|
+
break if volume[:attachment_status] == "attached"
|
117
114
|
end
|
118
115
|
print "\n"
|
119
116
|
|
@@ -128,7 +125,7 @@ namespace :rubber do
|
|
128
125
|
fi
|
129
126
|
mv /etc/fstab /etc/fstab.bak
|
130
127
|
cat /etc/fstab.bak | grep -v '#{vol_spec['mount']}' > /etc/fstab
|
131
|
-
if
|
128
|
+
if [ `lsb_release -r -s | sed 's/[.].*//'` -gt "10" ]; then
|
132
129
|
device=`echo #{vol_spec['device']} | sed 's/sd/xvd/'`
|
133
130
|
else
|
134
131
|
device='#{vol_spec['device']}'
|
@@ -216,26 +213,34 @@ namespace :rubber do
|
|
216
213
|
end
|
217
214
|
end
|
218
215
|
|
219
|
-
def setup_raid_volume(ic, raid_spec, create=false)
|
216
|
+
def setup_raid_volume(ic, raid_spec, create=false, raid_volume_list=nil)
|
220
217
|
if create
|
221
218
|
mdadm_init = "yes | mdadm --create #{raid_spec['device']} --metadata=1.1 --level #{raid_spec['raid_level']} --raid-devices #{raid_spec['source_devices'].size} #{raid_spec['source_devices'].sort.join(' ')}"
|
222
219
|
else
|
223
220
|
mdadm_init = "yes | mdadm --assemble #{raid_spec['device']} #{raid_spec['source_devices'].sort.join(' ')}"
|
224
221
|
end
|
225
|
-
|
222
|
+
|
226
223
|
task :_setup_raid_volume, :hosts => ic.external_ip do
|
227
224
|
rubber.sudo_script 'setup_raid_volume', <<-ENDSCRIPT
|
228
225
|
if ! grep -qE '#{raid_spec['device']}|#{raid_spec['mount']}' /etc/fstab; then
|
229
226
|
if mount | grep -q '#{raid_spec['mount']}'; then
|
230
227
|
umount '#{raid_spec['mount']}'
|
231
228
|
fi
|
232
|
-
|
233
|
-
|
234
|
-
echo '#{raid_spec['device']} #{raid_spec['mount']} #{raid_spec['filesystem']} #{raid_spec['mount_opts'] ? raid_spec['mount_opts'] : 'noatime'} 0 0 # rubber raid volume' >> /etc/fstab
|
235
|
-
|
236
|
-
# seems to help devices initialize, otherwise mdadm fails because
|
229
|
+
|
230
|
+
# wait for devices to initialize, otherwise mdadm fails because
|
237
231
|
# device not ready even though ec2 says the volume is attached
|
238
|
-
|
232
|
+
echo 'Waiting for devices'
|
233
|
+
cnt=0
|
234
|
+
while ! [[ -b #{raid_spec['source_devices'] * " && -b "} ]]; do
|
235
|
+
if [[ "$cnt" -eq "15" ]]; then
|
236
|
+
echo 'Timed out waiting for EBS volumes to initialize.'
|
237
|
+
exit 1
|
238
|
+
fi
|
239
|
+
echo '.'
|
240
|
+
sleep 2
|
241
|
+
let "cnt = $cnt + 1"
|
242
|
+
done
|
243
|
+
echo 'Devices ready'
|
239
244
|
|
240
245
|
#{mdadm_init}
|
241
246
|
|
@@ -243,16 +248,23 @@ namespace :rubber do
|
|
243
248
|
echo $((30*1024)) > /proc/sys/dev/raid/speed_limit_min
|
244
249
|
|
245
250
|
echo 'MAILADDR #{rubber_env.admin_email}' > /etc/mdadm/mdadm.conf
|
246
|
-
echo 'DEVICE
|
247
|
-
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
|
251
|
+
echo 'DEVICE #{raid_volume_list}' >> /etc/mdadm/mdadm.conf
|
252
|
+
mdadm --detail --scan | sed s/name=.*\\ // >> /etc/mdadm/mdadm.conf
|
253
|
+
|
254
|
+
update-initramfs -u
|
248
255
|
|
249
256
|
mv /etc/rc.local /etc/rc.local.bak
|
250
257
|
echo "mdadm --assemble --scan" > /etc/rc.local
|
251
258
|
chmod +x /etc/rc.local
|
259
|
+
|
260
|
+
mv /etc/fstab /etc/fstab.bak
|
261
|
+
cat /etc/fstab.bak | grep -vE '#{raid_spec['device']}|#{raid_spec['mount']}' > /etc/fstab
|
262
|
+
echo '#{raid_spec['device']} #{raid_spec['mount']} #{raid_spec['filesystem']} #{raid_spec['mount_opts'] ? raid_spec['mount_opts'] : 'noatime'} 0 0 # rubber raid volume' >> /etc/fstab
|
252
263
|
|
253
264
|
#{('yes | mkfs -t ' + raid_spec['filesystem'] + ' ' + raid_spec['filesystem_opts'] + ' ' + raid_spec['device']) if create}
|
254
265
|
mkdir -p '#{raid_spec['mount']}'
|
255
266
|
mount '#{raid_spec['mount']}'
|
267
|
+
|
256
268
|
fi
|
257
269
|
ENDSCRIPT
|
258
270
|
end
|
data/lib/rubber/version.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# For IronRuby (if you wish to use it) you will need:
|
9
9
|
# aptitude install curl mono-2.0-devel
|
10
10
|
|
11
|
-
packages: [build-essential, git-core, subversion, curl, autoconf, bison, ruby, zlib1g-dev, libssl-dev,
|
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 rvm itself
|
14
14
|
rvm_version: 1.10.2
|
@@ -250,14 +250,23 @@ stop_on_error_cmd: "function error_exit { exit 99; }; trap error_exit ERR"
|
|
250
250
|
#
|
251
251
|
# # for raid array, you'll need to add mdadm to packages. Likewise,
|
252
252
|
# # xfsprogs is needed for xfs filesystem support
|
253
|
+
# #
|
253
254
|
# packages: [xfsprogs, mdadm]
|
254
255
|
# raid_volumes:
|
255
256
|
# - device: /dev/md0 # OS device to to create raid array on
|
256
257
|
# mount: /mnt/fast # The directory to mount this array to
|
258
|
+
# mount_opts: 'nobootwait' # Recent Ubuntu versions require this flag or SSH will not start on reboot
|
257
259
|
# filesystem: xfs # the filesystem to create on array
|
258
260
|
# filesystem_opts: -f # the filesystem opts in mkfs
|
259
261
|
# raid_level: 0 # the raid level to use for the array
|
260
|
-
#
|
262
|
+
# # if you're using Ubuntu 11.x or later (Natty, Oneiric, Precise, etc)
|
263
|
+
# # you will want to specify the source devices in their /dev/xvd format
|
264
|
+
# # see https://bugs.launchpad.net/ubuntu/+source/linux/+bug/684875 for
|
265
|
+
# # more information.
|
266
|
+
# # NOTE: Only make this change for raid source_devices, NOT generic
|
267
|
+
# # volume commands above.
|
268
|
+
# source_devices: [/dev/sdx, /dev/sdy] # the source EBS devices we are creating raid array from (Ubuntu Lucid or older)
|
269
|
+
# source_devices: [/dev/xvdx, /dev/xvdy] # the source EBS devices we are creating raid array from (Ubuntu Natty or newer)
|
261
270
|
#
|
262
271
|
# # for LVM volumes, you'll need to add lvm2 to packages. Likewise,
|
263
272
|
# # xfsprogs is needed for xfs filesystem support
|
@@ -35,8 +35,8 @@
|
|
35
35
|
/var/lib/mysql/** rwk,
|
36
36
|
/var/log/mysql/ r,
|
37
37
|
/var/log/mysql/* rw,
|
38
|
-
/var/run/mysqld/mysqld.pid w,
|
39
|
-
/var/run/mysqld/mysqld.sock w,
|
38
|
+
/{,var/}run/mysqld/mysqld.pid w,
|
39
|
+
/{,var/}run/mysqld/mysqld.sock w,
|
40
40
|
|
41
41
|
/sys/devices/system/cpu/ r,
|
42
42
|
/sys/devices/system/cpu/** r,
|
@@ -71,7 +71,7 @@ class FogStorageTest < Test::Unit::TestCase
|
|
71
71
|
|
72
72
|
should "multipart files over 5 mb" do
|
73
73
|
@storage.expects(:singlepart_store).never
|
74
|
-
data = 'a' * (5 *
|
74
|
+
data = 'a' * (5 * 2**20 + 1)
|
75
75
|
|
76
76
|
#FIXME: Fog mock for initiate_multipart_upload isn't implemented. Remove mocks when it is
|
77
77
|
@provider.expects(:initiate_multipart_upload).returns(OpenStruct.new(:body => {'UploadId' => 'fake-upload-id'}))
|
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.pre3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-02-
|
13
|
+
date: 2012-02-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: capistrano
|
17
|
-
requirement: &
|
17
|
+
requirement: &22303940 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 2.8.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *22303940
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: thor
|
28
|
-
requirement: &
|
28
|
+
requirement: &22301780 !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: *22301780
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: clamp
|
39
|
-
requirement: &
|
39
|
+
requirement: &22300360 !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: *22300360
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: open4
|
50
|
-
requirement: &
|
50
|
+
requirement: &22299500 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *22299500
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: fog
|
61
|
-
requirement: &
|
61
|
+
requirement: &26492660 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 1.0.0
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *26492660
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake
|
72
|
-
requirement: &
|
72
|
+
requirement: &26492240 !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: *26492240
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: test-unit
|
83
|
-
requirement: &
|
83
|
+
requirement: &26491780 !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: *26491780
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: shoulda-context
|
94
|
-
requirement: &
|
94
|
+
requirement: &26491360 !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: *26491360
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: mocha
|
105
|
-
requirement: &
|
105
|
+
requirement: &26490940 !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: *26490940
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: ruby-debug19
|
116
|
-
requirement: &
|
116
|
+
requirement: &26490520 !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: *26490520
|
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
|
@@ -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: 4048110118862946601
|
510
510
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
511
511
|
none: false
|
512
512
|
requirements:
|