rudy 0.9.5 → 0.9.5.002
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.txt +5 -0
- data/UPGRADING-0.9 +115 -0
- data/lib/rudy.rb +16 -14
- data/lib/rudy/mixins.rb +2 -1
- data/lib/rudy/mixins/gibbler.rb +7 -0
- data/lib/rudy/routines.rb +1 -0
- data/lib/rudy/routines/handlers/rye.rb +2 -2
- data/lib/rudy/routines/handlers/script.rb +3 -2
- data/rudy.gemspec +12 -10
- metadata +8 -6
data/CHANGES.txt
CHANGED
data/UPGRADING-0.9
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
*Rudy 0.9 is not compatible with previous releases*. If you wish to upgrade, you will need to shutdown and relaunch machines and disks created with previous releases. There are several improvements to the configuration syntax and also disk backups will not be compatible between releases. If you rely on backups _you will need to make special arrangements_ (see Questions / Problems).
|
2
|
+
|
3
|
+
|
4
|
+
h2. The Process
|
5
|
+
|
6
|
+
_This describes the process for upgrading from 0.8. If you are using an earlier version of Rudy, see Questions & Problems below._
|
7
|
+
|
8
|
+
|
9
|
+
* Get everything you need off of your existing machines instances and disk volumes.
|
10
|
+
* Shutdown existing machines and destroy disks.
|
11
|
+
* Install Rudy 0.9
|
12
|
+
* Update your Rudy configuration.
|
13
|
+
* Startup your new machines.
|
14
|
+
|
15
|
+
h3. Shutdown
|
16
|
+
|
17
|
+
<pre><code> $ rudy -V
|
18
|
+
Rudy version: 0.8.5
|
19
|
+
|
20
|
+
$ rudy -vv shutdown
|
21
|
+
...
|
22
|
+
|
23
|
+
$ rudy machines
|
24
|
+
No Machines
|
25
|
+
$ rudy disks
|
26
|
+
No disks
|
27
|
+
|
28
|
+
# Double check
|
29
|
+
$ rudy-ec2 instances
|
30
|
+
No instances running
|
31
|
+
$ rudy-ec2 volumes
|
32
|
+
No volumes
|
33
|
+
</pre></code>
|
34
|
+
|
35
|
+
h3. Install
|
36
|
+
|
37
|
+
<pre><code> $ sudo gem install rudy -V
|
38
|
+
$ rudy -V
|
39
|
+
Rudy version 0.9.1
|
40
|
+
</pre></code>
|
41
|
+
|
42
|
+
h3. Configuration Changes
|
43
|
+
|
44
|
+
You will need to make the following changes to your Rudy configuration:
|
45
|
+
|
46
|
+
h4. SSH commands in routines
|
47
|
+
|
48
|
+
The routine syntax has some minor improvements. The @before@ and @after@ keywords are now used exclusively for defining dependencies. Local and remote blocks are now simply, @local@ and @remote@.
|
49
|
+
|
50
|
+
*Old:*
|
51
|
+
|
52
|
+
<pre><code>routines do
|
53
|
+
sysupdate do
|
54
|
+
script_local do
|
55
|
+
uptime
|
56
|
+
end
|
57
|
+
before :root do
|
58
|
+
apt_get 'update'
|
59
|
+
apt_get 'install', 'build-essential'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end </pre></code>
|
63
|
+
|
64
|
+
*New:*
|
65
|
+
|
66
|
+
<pre><code>routines do
|
67
|
+
sysupdate do
|
68
|
+
local do
|
69
|
+
uptime
|
70
|
+
end
|
71
|
+
remote :root do
|
72
|
+
apt_get 'update'
|
73
|
+
apt_get 'install', 'build-essential'
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end</pre></code>
|
77
|
+
|
78
|
+
For startup, shutdown, and reboot routines @before_remote@, @before_local@ and @after_remote@, @after_local@ are still available where appropriate (there's no @before_remote@ for startup).
|
79
|
+
|
80
|
+
|
81
|
+
h4. config block in machines config
|
82
|
+
|
83
|
+
This config block is no longer used. In 0.8 a YAML file containing this configuration would be uploaded to each machine during routines. This is also removed. However, it is now possible to upload any file you want inside the remote routine blocks.
|
84
|
+
|
85
|
+
*Old:*
|
86
|
+
|
87
|
+
<pre><code>machines do
|
88
|
+
config do
|
89
|
+
dbmaster 'localhost'
|
90
|
+
newparam 573114
|
91
|
+
end
|
92
|
+
end</pre></code>
|
93
|
+
|
94
|
+
|
95
|
+
*New:*
|
96
|
+
|
97
|
+
<pre><code>routines do
|
98
|
+
startup do
|
99
|
+
remote :root do
|
100
|
+
file_upload 'local/file/path', 'remote/path'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
</pre></code>
|
104
|
+
|
105
|
+
h4. Startup
|
106
|
+
|
107
|
+
<pre><code>$ rudy startup
|
108
|
+
</pre></code>
|
109
|
+
|
110
|
+
|
111
|
+
h2. Questions / Problems
|
112
|
+
|
113
|
+
If you have any questions or problems either before or after you upgrade to Rudy 0.9, feel free to use the "discussion group":http://groups.google.com/group/rudy-deployment or email me directly (note: if my response could help others I will post it to the discussion group).
|
114
|
+
|
115
|
+
-- Delano (@solutious.com)
|
data/lib/rudy.rb
CHANGED
@@ -4,8 +4,8 @@ unless defined?(RUDY_HOME)
|
|
4
4
|
RUDY_LIB = File.join(File.dirname(__FILE__), '..', 'lib')
|
5
5
|
end
|
6
6
|
|
7
|
-
local_libs = %w{net-ssh net-scp aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
|
8
|
-
local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
|
7
|
+
#local_libs = %w{net-ssh net-scp aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
|
8
|
+
#local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
|
9
9
|
#require 'rubygems'
|
10
10
|
|
11
11
|
begin; require 'json'; rescue LoadError; end # Silence!
|
@@ -13,20 +13,19 @@ begin; require 'json'; rescue LoadError; end # Silence!
|
|
13
13
|
require 'digest/md5'
|
14
14
|
require 'stringio'
|
15
15
|
require 'ostruct'
|
16
|
-
|
16
|
+
autoload :YAML, 'yaml'
|
17
17
|
require 'logger'
|
18
18
|
require 'socket'
|
19
19
|
require 'resolv'
|
20
20
|
require 'timeout'
|
21
|
-
|
21
|
+
autoload :Gibbler, 'gibbler/aliases'
|
22
22
|
require 'tempfile'
|
23
23
|
require 'rudy/mixins'
|
24
|
-
require 'gibbler/aliases'
|
25
24
|
require 'storable'
|
26
|
-
|
25
|
+
autoload :SysInfo, 'sysinfo'
|
27
26
|
require 'attic'
|
28
27
|
require 'annoy'
|
29
|
-
|
28
|
+
autoload :Rye, 'rye'
|
30
29
|
|
31
30
|
# = Rudy
|
32
31
|
#
|
@@ -43,24 +42,31 @@ module Rudy
|
|
43
42
|
MAJOR = 0.freeze
|
44
43
|
MINOR = 9.freeze
|
45
44
|
TINY = 5.freeze
|
45
|
+
PATCH = '002'.freeze
|
46
46
|
end
|
47
|
-
def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
|
47
|
+
def self.to_s; [MAJOR, MINOR, TINY, PATCH].join('.'); end
|
48
48
|
def self.to_f; self.to_s.to_f; end
|
49
49
|
end
|
50
50
|
|
51
|
+
def Rudy.sysinfo
|
52
|
+
@@sysinfo = SysInfo.new.freeze if @@sysinfo.nil?
|
53
|
+
@@sysinfo
|
54
|
+
end
|
55
|
+
def sysinfo; Rudy.sysinfo; end
|
56
|
+
|
51
57
|
unless defined? Rudy::DOMAIN # We can assume all constants are defined
|
52
58
|
|
53
59
|
@@quiet = false
|
54
60
|
@@auto = false
|
55
61
|
@@debug = false
|
56
|
-
@@sysinfo =
|
62
|
+
@@sysinfo = nil
|
57
63
|
|
58
64
|
# SimpleDB accepts dashes in the domain name on creation and with the query syntax.
|
59
65
|
# However, with select syntax it says: "The specified query expression syntax is not valid"
|
60
66
|
DOMAIN = "rudy_state".freeze
|
61
67
|
DELIM = '-'.freeze
|
62
68
|
|
63
|
-
CONFIG_DIR = File.join(
|
69
|
+
CONFIG_DIR = File.join(Rudy.sysinfo.home, '.rudy').freeze
|
64
70
|
CONFIG_FILE = File.join(Rudy::CONFIG_DIR, 'config').freeze
|
65
71
|
SSH_KEY_DIR = File.expand_path('~/.ssh').freeze
|
66
72
|
|
@@ -114,10 +120,6 @@ module Rudy
|
|
114
120
|
def Rudy.enable_debug; @@debug = true; end
|
115
121
|
def Rudy.disable_debug; @@debug = false; end
|
116
122
|
|
117
|
-
|
118
|
-
def Rudy.sysinfo; @@sysinfo; end
|
119
|
-
def sysinfo; @@sysinfo; end
|
120
|
-
|
121
123
|
end
|
122
124
|
|
123
125
|
if Rudy.sysinfo.vm == :java
|
data/lib/rudy/mixins.rb
CHANGED
data/lib/rudy/routines.rb
CHANGED
@@ -101,6 +101,7 @@ module Rudy
|
|
101
101
|
rescue NameError, ArgumentError, RuntimeError, Errno::ECONNREFUSED => ex
|
102
102
|
Rudy::Huxtable.le "#{ex.class}: #{ex.message}".color(:red)
|
103
103
|
Rudy::Huxtable.le ex.backtrace if Rudy.debug?
|
104
|
+
|
104
105
|
unless Rudy::Huxtable.global.parallel
|
105
106
|
choice = Annoy.get_user_input('(S)kip (A)bort: ', nil, 3600) || ''
|
106
107
|
if choice.match(/\AS/i)
|
@@ -51,7 +51,7 @@ module Rudy::Routines::Handlers;
|
|
51
51
|
|
52
52
|
box.exception_hook(::Rye::CommandError, &rbox_exception_handler)
|
53
53
|
box.exception_hook(Exception, &rbox_exception_handler)
|
54
|
-
|
54
|
+
|
55
55
|
## It'd better for unknown commands to be handled elsewhere
|
56
56
|
## because it doesn't make sense to retry a method that doesn't exist
|
57
57
|
##box.exception_hook(Rye::CommandNotFound, &rbox_exception_handler)
|
@@ -166,7 +166,7 @@ module Rudy::Routines::Handlers;
|
|
166
166
|
else
|
167
167
|
le prefix << "#{ex.class}: #{ex.message}".color(:red)
|
168
168
|
end
|
169
|
-
le ex.backtrace if
|
169
|
+
le ex.backtrace if Rudy.debug?
|
170
170
|
end
|
171
171
|
|
172
172
|
|
@@ -68,6 +68,9 @@ module Rudy; module Routines; module Handlers;
|
|
68
68
|
### EXECUTE THE COMMANDS BLOCK
|
69
69
|
begin
|
70
70
|
robj.batch(argv, &proc)
|
71
|
+
rescue Rye::CommandError => ex
|
72
|
+
# No need to bubble exception up when in parallel mode
|
73
|
+
raise ex unless Rye::Set == robj
|
71
74
|
ensure
|
72
75
|
robj.enable_safe_mode # In case it was disabled
|
73
76
|
robj.switch_user original_user # Return to the user it was provided with
|
@@ -78,8 +81,6 @@ module Rudy; module Routines; module Handlers;
|
|
78
81
|
end
|
79
82
|
|
80
83
|
|
81
|
-
|
82
|
-
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
data/rudy.gemspec
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
@spec = Gem::Specification.new do |s|
|
2
|
-
|
2
|
+
s.name = "rudy"
|
3
3
|
s.rubyforge_project = 'rudy'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
s.version = "0.9.5.002"
|
5
|
+
s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
|
6
|
+
s.description = s.summary
|
7
|
+
s.author = "Delano Mandelbaum"
|
8
|
+
s.email = "delano@solutious.com"
|
9
|
+
s.homepage = "http://solutious.com/projects/rudy/"
|
10
10
|
|
11
11
|
s.extra_rdoc_files = %w[README.rdoc Rudyfile LICENSE.txt CHANGES.txt]
|
12
12
|
s.has_rdoc = true
|
@@ -16,15 +16,15 @@
|
|
16
16
|
|
17
17
|
s.executables = %w[rudy rudy-ec2 rudy-sdb rudy-s3]
|
18
18
|
|
19
|
-
s.add_dependency 'rye', '>= 0.8.
|
19
|
+
s.add_dependency 'rye', '>= 0.8.11'
|
20
20
|
s.add_dependency 'attic', '>= 0.4.0'
|
21
21
|
s.add_dependency 'annoy', '>= 0.5.5'
|
22
22
|
s.add_dependency 'drydock', '>= 0.6.6'
|
23
23
|
s.add_dependency 'caesars', '>= 0.7.3'
|
24
24
|
s.add_dependency 'sysinfo', '>= 0.7.0'
|
25
|
-
s.add_dependency 'gibbler', '>= 0.
|
25
|
+
s.add_dependency 'gibbler', '>= 0.7.1'
|
26
26
|
s.add_dependency 'tryouts', '>= 0.8.4'
|
27
|
-
s.add_dependency 'storable', '>= 0.5.
|
27
|
+
s.add_dependency 'storable', '>= 0.5.8'
|
28
28
|
|
29
29
|
s.add_dependency 'aws-s3', '>= 0.6.1'
|
30
30
|
s.add_dependency 'highline', '>= 1.5.1'
|
@@ -38,6 +38,7 @@
|
|
38
38
|
README.rdoc
|
39
39
|
Rakefile
|
40
40
|
Rudyfile
|
41
|
+
UPGRADING-0.9
|
41
42
|
bin/rudy
|
42
43
|
bin/rudy-ec2
|
43
44
|
bin/rudy-s3
|
@@ -103,6 +104,7 @@
|
|
103
104
|
lib/rudy/metadata/disk.rb
|
104
105
|
lib/rudy/metadata/machine.rb
|
105
106
|
lib/rudy/mixins.rb
|
107
|
+
lib/rudy/mixins/gibbler.rb
|
106
108
|
lib/rudy/mixins/hash.rb
|
107
109
|
lib/rudy/mixins/symbol.rb
|
108
110
|
lib/rudy/routines.rb
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rudy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.5
|
4
|
+
version: 0.9.5.002
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Delano Mandelbaum
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-10-30 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.8.
|
23
|
+
version: 0.8.11
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: attic
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0.
|
83
|
+
version: 0.7.1
|
84
84
|
version:
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: tryouts
|
@@ -100,7 +100,7 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.5.
|
103
|
+
version: 0.5.8
|
104
104
|
version:
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: aws-s3
|
@@ -152,6 +152,7 @@ files:
|
|
152
152
|
- README.rdoc
|
153
153
|
- Rakefile
|
154
154
|
- Rudyfile
|
155
|
+
- UPGRADING-0.9
|
155
156
|
- bin/rudy
|
156
157
|
- bin/rudy-ec2
|
157
158
|
- bin/rudy-s3
|
@@ -217,6 +218,7 @@ files:
|
|
217
218
|
- lib/rudy/metadata/disk.rb
|
218
219
|
- lib/rudy/metadata/machine.rb
|
219
220
|
- lib/rudy/mixins.rb
|
221
|
+
- lib/rudy/mixins/gibbler.rb
|
220
222
|
- lib/rudy/mixins/hash.rb
|
221
223
|
- lib/rudy/mixins/symbol.rb
|
222
224
|
- lib/rudy/routines.rb
|
@@ -311,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
311
313
|
requirements: []
|
312
314
|
|
313
315
|
rubyforge_project: rudy
|
314
|
-
rubygems_version: 1.3.
|
316
|
+
rubygems_version: 1.3.5
|
315
317
|
signing_key:
|
316
318
|
specification_version: 3
|
317
319
|
summary: "Rudy: Not your grandparents' EC2 deployment tool."
|