solutious-rudy 0.9.0 → 0.9.1

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.
Files changed (48) hide show
  1. data/CHANGES.txt +61 -4
  2. data/README.rdoc +91 -53
  3. data/Rakefile +0 -92
  4. data/Rudyfile +15 -25
  5. data/bin/rudy +52 -41
  6. data/examples/gem-test.rb +92 -0
  7. data/lib/rudy.rb +15 -7
  8. data/lib/rudy/aws.rb +2 -2
  9. data/lib/rudy/aws/ec2.rb +2 -2
  10. data/lib/rudy/aws/ec2/instance.rb +3 -3
  11. data/lib/rudy/aws/ec2/volume.rb +4 -4
  12. data/lib/rudy/cli/aws/ec2/candy.rb +13 -13
  13. data/lib/rudy/cli/base.rb +10 -4
  14. data/lib/rudy/cli/config.rb +13 -3
  15. data/lib/rudy/cli/disks.rb +1 -1
  16. data/lib/rudy/cli/execbase.rb +5 -2
  17. data/lib/rudy/cli/machines.rb +231 -30
  18. data/lib/rudy/cli/networks.rb +34 -0
  19. data/lib/rudy/cli/routines.rb +1 -1
  20. data/lib/rudy/cli/status.rb +60 -0
  21. data/lib/rudy/config.rb +42 -14
  22. data/lib/rudy/exceptions.rb +5 -1
  23. data/lib/rudy/global.rb +29 -13
  24. data/lib/rudy/huxtable.rb +2 -2
  25. data/lib/rudy/machines.rb +2 -2
  26. data/lib/rudy/metadata/disk.rb +2 -1
  27. data/lib/rudy/routines.rb +3 -3
  28. data/lib/rudy/routines/base.rb +7 -4
  29. data/lib/rudy/routines/handlers/disks.rb +16 -6
  30. data/lib/rudy/routines/handlers/group.rb +5 -3
  31. data/lib/rudy/routines/handlers/host.rb +14 -16
  32. data/lib/rudy/routines/handlers/script.rb +2 -2
  33. data/lib/rudy/routines/handlers/user.rb +4 -0
  34. data/lib/rudy/routines/reboot.rb +26 -9
  35. data/lib/rudy/routines/shutdown.rb +4 -0
  36. data/lib/rudy/routines/startup.rb +3 -2
  37. data/lib/rudy/utils.rb +23 -9
  38. data/rudy.gemspec +10 -29
  39. data/tryouts/10_require_time/10_rudy_tryouts.rb +1 -1
  40. data/tryouts/{misc/console_tryout.rb → exploration/console.rb} +0 -0
  41. data/tryouts/{misc/usage_tryout.rb → exploration/machine.rb} +0 -0
  42. data/tryouts/failer +1 -1
  43. metadata +8 -70
  44. data/tryouts/misc/disks_tryout.rb +0 -48
  45. data/tryouts/misc/drydock_tryout.rb +0 -48
  46. data/tryouts/misc/nested_methods.rb +0 -103
  47. data/tryouts/misc/session_tryout.rb +0 -46
  48. data/tryouts/misc/tryouts.rb +0 -33
data/bin/rudy CHANGED
@@ -30,33 +30,35 @@ class RudyCLI < Rudy::CLI::Base
30
30
  global :r, :role, String, "Connect to a machine with the specified role (e.g. #{Rudy::DEFAULT_ROLE})"
31
31
  global :p, :position, String, "Position in the machine in its group"
32
32
  global :b, :bucket, String, "An S3 bucket name (used when creating images)"
33
- global :t, :testrun, "Test run. Don't execute action (EXPERIMENTAL)."
34
- global :P, :parallel, "Execute remote commands in parallel (EXPERIMENTAL)."
33
+ global :t, :testrun, "Test run. Don't execute action (PARTIALLY SUPPORTED)."
34
+ global :P, :parallel, "Execute remote commands in parallel (PARTIALLY SUPPORTED)."
35
35
  global :F, :force, "Force an action despite warnings"
36
36
 
37
+
37
38
  # ------------------------------------------ RUDY OBJECTS --------
38
39
  # ------------------------------------------------------------------
39
40
 
40
- about "View Routines"
41
- usage "rudy routines"
42
- usage "rudy routines -l"
43
- option :l, :all, "Display routines for all environments and roles"
44
- command :routines => Rudy::CLI::Routines
45
- command_alias :routines, :r
46
-
47
41
  about "View Machines"
48
42
  usage "rudy"
49
43
  usage "rudy machines"
50
44
  usage "rudy machines -l"
45
+ usage "rudy machines -U"
46
+ usage "rudy machines -A"
47
+ usage "rudy machines -S [static ip address]"
48
+ usage "rudy machines -D"
51
49
  option :l, :all, "Display machines for all environments and roles"
52
- action :W, :wash, "Wash machine metadata."
50
+ action :W, :wash, "Wash machine metadata"
51
+ action :T, :available, "Test availablity"
52
+ action :U, :update, "Update machines based on configuration"
53
+ action :A, :associate, "Associate static IP addresses or display existing ones"
54
+ action :N, :disassociate, "Disassociate static IP addresses"
53
55
  command :machines => Rudy::CLI::Machines
54
56
  command_alias :machines, :m
55
57
 
56
58
  about "View Disks"
57
59
  usage "rudy disks"
58
60
  usage "rudy disks -l"
59
- action :W, :wash, "Wash disk metadata."
61
+ action :W, :wash, "Wash disk metadata"
60
62
  option :b, :backups, "Display backups"
61
63
  option :l, :all, "Display all disks"
62
64
  command :disks => Rudy::CLI::Disks
@@ -65,7 +67,7 @@ class RudyCLI < Rudy::CLI::Base
65
67
  about "View Backups"
66
68
  usage "rudy backups"
67
69
  usage "rudy backups -l"
68
- action :W, :wash, "Wash backups metadata."
70
+ action :W, :wash, "Wash backup metadata"
69
71
  option :l, :all, "Display all backups"
70
72
  command :backups => Rudy::CLI::Backups
71
73
  command_alias :backups, :b
@@ -80,18 +82,30 @@ class RudyCLI < Rudy::CLI::Base
80
82
  argv :oid
81
83
  command :metadata => Rudy::CLI::Metadata
82
84
 
83
- about "Log in to a machine"
84
- command :ssh => Rudy::CLI::Machines
85
-
86
- #about "Open the machine in your default browser (OSX only)"
87
- #option :s, :https, "Use HTTPS"
88
- #option :p, :port, Integer, "Port"
89
- #command :open => Rudy::CLI::Candy
85
+ about "View Network configuration (local network only)"
86
+ usage "rudy networks"
87
+ usage "rudy networks -L"
88
+ usage "rudy networks -L -i"
89
+ usage "rudy networks -L -e"
90
+ usage "rudy networks -U"
91
+ option :e, :external, "Display only external IP address"
92
+ option :i, :internal, "Display only internal IP address"
93
+ action :U, :update, "Update networks based on configuration"
94
+ action :L, :local, "Show local network configuration"
95
+ command :networks => Rudy::CLI::Networks
96
+ command_alias :networks, :n
90
97
 
91
98
 
92
99
  # ----------------------------------------- RUDY ROUTINES --------
93
100
  # ------------------------------------------------------------------
94
101
 
102
+ about "View Routines"
103
+ usage "rudy routines"
104
+ usage "rudy routines -l"
105
+ option :l, :all, "Display routines for all environments and roles"
106
+ command :routines => Rudy::CLI::Routines
107
+ command_alias :routines, :r
108
+
95
109
  # A "do nothing" routine. Passthrough simply executes a routine
96
110
  # config block. Drydock's trawler uses this for unknown commands.
97
111
  about "A passthrough for custom routines"
@@ -117,7 +131,19 @@ class RudyCLI < Rudy::CLI::Base
117
131
 
118
132
  # ------------------------------------ RUDY MISCELLANEOUS --------
119
133
  # ------------------------------------------------------------------
120
-
134
+
135
+ about "Display existing environment objects"
136
+ option :l, :all, "Include all regions"
137
+ command :status => Rudy::CLI::Status
138
+
139
+ about "Log in to a machine"
140
+ command :ssh => Rudy::CLI::Machines
141
+
142
+ #about "Open the machine in your default browser (OSX only)"
143
+ #option :s, :https, "Use HTTPS"
144
+ #option :p, :port, Integer, "Port"
145
+ #command :open => Rudy::CLI::Candy
146
+
121
147
  usage "rudy [-f config-file] config [param-name]"
122
148
  about "Check Rudy configuration."
123
149
  option :l, :all, "Display all configs for all machines"
@@ -132,10 +158,12 @@ class RudyCLI < Rudy::CLI::Base
132
158
  #option :g, :group, String, "Display configuration for a specific group"
133
159
  argv :name
134
160
  command :config => Rudy::CLI::Config
161
+ command_alias :config, :configs
135
162
 
136
163
  command :print_global => Rudy::CLI::Config
164
+ command_alias :print_global, :globals
137
165
  command_alias :print_global, :global
138
-
166
+
139
167
  about "Initialize Rudy configuration"
140
168
  command :init do |obj|
141
169
 
@@ -165,7 +193,7 @@ class RudyCLI < Rudy::CLI::Base
165
193
  Rudy::NoConfig => ex
166
194
  puts "AWS credentials must be configured to continue."
167
195
  puts "You can modify these in #{Rudy::CONFIG_FILE}"
168
- exit 1
196
+ exit 0
169
197
  end
170
198
 
171
199
  obj.global.quiet = true # don't print elapsed time
@@ -177,24 +205,7 @@ class RudyCLI < Rudy::CLI::Base
177
205
  t = obj.option.local ? Time.now : Time.now.utc
178
206
  puts '%s' % t.strftime("%Y-%m-%d %T %Z (%z)")
179
207
  end
180
-
181
- usage "rudy myaddress [-i] [-e]"
182
- about "Displays you current internal and external IP addresses"
183
- option :e, :external, "Display only external IP address"
184
- option :i, :internal, "Display only internal IP address"
185
- command :myaddress do |obj|
186
- ea = Rudy::Utils::external_ip_address || ''
187
- ia = Rudy::Utils::internal_ip_address || ''
188
- if obj.global.quiet
189
- puts ia unless obj.option.external && !obj.option.internal
190
- puts ea unless obj.option.internal && !obj.option.external
191
- else
192
- puts "%10s: %s" % ['Internal', ia] unless obj.option.external && !obj.option.internal
193
- puts "%10s: %s" % ['External', ea] unless obj.option.internal && !obj.option.external
194
- end
195
- obj.global.quiet = true # don't print elapsed time
196
- end
197
-
208
+
198
209
  usage "rudy [global options] annoy [-h -m -l] [-e]"
199
210
  about "Play around with Rudy's annoying challenges"
200
211
  option :s, :string, "A numeric challenge"
@@ -229,7 +240,7 @@ class RudyCLI < Rudy::CLI::Base
229
240
  end
230
241
  end
231
242
 
232
-
243
+ about "Display basic system information"
233
244
  command :sysinfo do
234
245
  puts Rudy.sysinfo.to_yaml
235
246
  end
@@ -0,0 +1,92 @@
1
+ # Rudy Gem Test
2
+ #
3
+ # This configuration is used to
4
+ # test installing the Rudy gem.
5
+
6
+ defaults do
7
+ color true
8
+ environment :test
9
+ role :rudy
10
+ end
11
+
12
+ machines do
13
+ env :test do
14
+ role :rudy do
15
+ ami 'ami-e348af8a' # Alestic Debian 5.0, 32-bit (US)
16
+ user :root
17
+ end
18
+ end
19
+ end
20
+
21
+ commands do
22
+ allow :apt_get, "apt-get", :y, :q
23
+ allow :gem_install, "/usr/bin/gem", "install", :n, '/usr/bin', :y, :V, "--no-rdoc", "--no-ri"
24
+ allow :gem_sources, "/usr/bin/gem", "sources"
25
+ allow :gem_uninstall, "/usr/bin/gem", "uninstall", :V, :y
26
+ allow :update_rubygems
27
+ allow :rake
28
+ allow :rm
29
+ end
30
+
31
+ routines do
32
+
33
+
34
+ install_rubyforge do
35
+ remote :root do
36
+ gem_install 'rudy', :V
37
+ end
38
+ end
39
+
40
+ install_github do
41
+ remote :root do
42
+ gem_sources :a, "http://gems.github.com"
43
+ gem_install 'solutious-rudy'
44
+ end
45
+ end
46
+
47
+ package_gem do
48
+ local do
49
+ rm :r, :f, 'pkg'
50
+ rake 'package'
51
+ end
52
+ end
53
+
54
+ install_gem do
55
+ before :package_gem
56
+ remote :root do
57
+ file_upload "pkg/rudy-#{Rudy::VERSION}.gem", "/tmp/"
58
+ gem_install "/tmp/rudy-#{Rudy::VERSION}.gem"
59
+ end
60
+ end
61
+
62
+ remove_rudy do
63
+ remote :root do
64
+ gem_uninstall 'rudy'
65
+ rm :r, :f, '.rudy'
66
+ end
67
+ end
68
+
69
+ init_rudy do
70
+ remote do
71
+ disable_safe_mode
72
+ rudy :v, :v, 'init' # create home directory
73
+ file_upload File.expand_path('~/.rudy/config'), '.rudy/'
74
+ ls :l, '.rudy/config'
75
+ rudy :v, :v, 'init'
76
+ rudy 'status', :l
77
+ end
78
+ end
79
+
80
+ sysupdate do
81
+ remote :root do
82
+ apt_get "update"
83
+ apt_get "install", "build-essential", "git-core"
84
+ apt_get "install", "ruby1.8-dev", "rdoc", "libzlib-ruby", "rubygems"
85
+ mkdir :p, "/var/lib/gems/1.8/bin" # Doesn't get created, but causes Rubygems to fail
86
+ gem_install "builder", "session"
87
+ gem_install 'rubygems-update', "-v=1.3.4" # circular issue with 1.3.5 and hoe
88
+ update_rubygems
89
+ end
90
+ end
91
+ end
92
+
@@ -4,7 +4,7 @@ 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 amazon-ec2 aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
7
+ local_libs = %w{net-ssh net-scp aws-s3 caesars drydock rye storable sysinfo annoy gibbler}
8
8
  local_libs.each { |dir| $:.unshift File.join(RUDY_HOME, '..', dir, 'lib') }
9
9
  #require 'rubygems'
10
10
 
@@ -16,6 +16,7 @@ require 'ostruct'
16
16
  require 'yaml'
17
17
  require 'logger'
18
18
  require 'socket'
19
+ require 'resolv'
19
20
  require 'timeout'
20
21
  require 'gibbler'
21
22
  require 'tempfile'
@@ -27,7 +28,6 @@ require 'attic'
27
28
  require 'annoy'
28
29
  require 'rye'
29
30
 
30
-
31
31
  # = Rudy
32
32
  #
33
33
  #
@@ -42,7 +42,7 @@ module Rudy
42
42
  unless defined?(MAJOR)
43
43
  MAJOR = 0.freeze
44
44
  MINOR = 9.freeze
45
- TINY = 0.freeze
45
+ TINY = 1.freeze
46
46
  end
47
47
  def self.to_s; [MAJOR, MINOR, TINY].join('.'); end
48
48
  def self.to_f; self.to_s.to_f; end
@@ -51,7 +51,7 @@ module Rudy
51
51
  unless defined? Rudy::DOMAIN # We can assume all constants are defined
52
52
 
53
53
  @@quiet = false
54
- @@yes = false
54
+ @@auto = false
55
55
  @@debug = false
56
56
  @@sysinfo = SysInfo.new.freeze
57
57
 
@@ -100,9 +100,9 @@ module Rudy
100
100
  def Rudy.enable_quiet; @@quiet = true; end
101
101
  def Rudy.disable_quiet; @@quiet = false; end
102
102
 
103
- def Rudy.yes?; @@yes == true; end
104
- def Rudy.enable_yes; @@yes = true; end
105
- def Rudy.disable_yes; @@yes = false; end
103
+ def Rudy.auto?; @@auto == true; end
104
+ def Rudy.enable_auto; @@auto = true; end
105
+ def Rudy.disable_auto; @@auto = false; end
106
106
 
107
107
  def Rudy.debug?; @@debug == true; end
108
108
  def Rudy.enable_debug; @@debug = true; end
@@ -114,6 +114,14 @@ module Rudy
114
114
 
115
115
  end
116
116
 
117
+ if Rudy.sysinfo.vm == :java
118
+ require 'java'
119
+ module Java
120
+ include_class java.net.Socket unless defined?(Java::Socket)
121
+ include_class java.net.InetSocketAddress unless defined?(Java::InetSocketAddress)
122
+ end
123
+ end
124
+
117
125
  require 'rudy/exceptions'
118
126
  require 'rudy/utils' # The
119
127
  require 'rudy/global' # order
@@ -8,10 +8,10 @@ module Rudy
8
8
  extend self
9
9
 
10
10
  unless defined?(Rudy::AWS::VALID_REGIONS)
11
- VALID_REGIONS = ['eu-west-1', 'us-east-1'].freeze
11
+ VALID_REGIONS = [:'eu-west-1', :'us-east-1'].freeze
12
12
  end
13
13
 
14
- def valid_region?(r); VALID_REGIONS.member?(r.to_s || ''); end
14
+ def valid_region?(r); VALID_REGIONS.member?(r.to_sym || ''); end
15
15
 
16
16
  # Modifies +str+ by removing <tt>[\0\n\r\032\\\\]</tt> and escaping <tt>[\'\"]</tt>
17
17
  def escape(str)
@@ -4,7 +4,7 @@ module Rudy; module AWS
4
4
  # include Rudy::Huxtable
5
5
 
6
6
  def self.connect(access_key=nil, secret_key=nil, region=nil, logger=nil)
7
-
7
+
8
8
  if region
9
9
  raise InvalidRegion, region unless Rudy::AWS.valid_region?(region)
10
10
  host = "#{region}.ec2.amazonaws.com"
@@ -15,7 +15,7 @@ module Rudy; module AWS
15
15
  host ||= DEFAULT_EC2_HOST
16
16
  port ||= DEFAULT_EC2_PORT
17
17
 
18
- @@ec2 ||= ::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key)
18
+ @@ec2 = ::EC2::Base.new(:port => port, :server=> host, :access_key_id => access_key, :secret_access_key => secret_key)
19
19
  @@logger = logger
20
20
  end
21
21
 
@@ -7,7 +7,7 @@ module Rudy::AWS
7
7
  field :aki
8
8
  field :ari
9
9
  field :launch_index => Time
10
- field :launch_time
10
+ field :created
11
11
  field :keyname
12
12
  field :size
13
13
  field :ami
@@ -263,7 +263,7 @@ module Rudy::AWS
263
263
  instances = nil if instances.empty? # Don't return an empty hash
264
264
  instances
265
265
  end
266
-
266
+
267
267
  # System console output.
268
268
  #
269
269
  # * +inst_id+ instance ID (String) or Instance object.
@@ -374,7 +374,7 @@ module Rudy::AWS
374
374
  inst = Rudy::AWS::EC2::Instance.new
375
375
  inst.aki = h['kernelId']
376
376
  inst.ami = h['imageId']
377
- inst.launch_time = h['launchTime']
377
+ inst.created = h['launchTime']
378
378
  inst.keyname = h['keyName']
379
379
  inst.launch_index = h['amiLaunchIndex']
380
380
  inst.size = h['instanceType']
@@ -10,8 +10,8 @@ module Rudy::AWS
10
10
  field :size => Integer
11
11
  field :snapid
12
12
  field :zone => Symbol
13
- field :create_time => Time
14
- field :attach_time => Time
13
+ field :created => Time
14
+ field :attached => Time
15
15
  field :instid
16
16
  field :device
17
17
 
@@ -212,12 +212,12 @@ module Rudy::AWS
212
212
  vol.snapid = h['snapshotId']
213
213
  vol.zone = h['availabilityZone']
214
214
  vol.awsid = h['volumeId']
215
- vol.create_time = h['createTime']
215
+ vol.created = h['createTime']
216
216
  if h['attachmentSet'].is_a?(Hash)
217
217
  item = h['attachmentSet']['item'].first
218
218
  vol.status = item['status'] # Overwrite "available status". Possibly a bad idea.
219
219
  vol.device = item['device']
220
- vol.attach_time = item['attachTime']
220
+ vol.attached = item['attachTime']
221
221
  vol.instid = item['instanceId']
222
222
  end
223
223
  vol.postprocess
@@ -64,11 +64,11 @@ module AWS; module EC2;
64
64
  opts[:id] = @option.instid if @option.instid
65
65
 
66
66
  # Options to be sent to Rye::Box
67
- ssh_opts = { :user => @global.user || Rudy.sysinfo.user, :debug => nil }
67
+ rye_opts = { :user => @global.user || Rudy.sysinfo.user, :debug => nil }
68
68
  if @@global.pkey
69
69
  raise "Cannot find file #{@@global.pkey}" unless File.exists?(@@global.pkey)
70
70
  raise InsecureKeyPermissions, @@global.pkey unless File.stat(@@global.pkey).mode == 33152
71
- ssh_opts[:keys] = @@global.pkey
71
+ rye_opts[:keys] = @@global.pkey
72
72
  end
73
73
 
74
74
 
@@ -88,20 +88,20 @@ module AWS; module EC2;
88
88
 
89
89
  # Print header
90
90
  if @@global.quiet
91
- print "You are #{ssh_opts[:user].bright}. " if !checked # only the 1st
91
+ print "You are #{rye_opts[:user].bright}. " if !checked # only the 1st
92
92
  else
93
- print "Connecting #{ssh_opts[:user].bright}@#{inst.dns_public} "
93
+ print "Connecting #{rye_opts[:user].bright}@#{inst.dns_public} "
94
94
  puts "(#{inst.awsid}, groups: #{inst.groups.join(', ')})"
95
95
  end
96
96
 
97
97
  # Make sure we want to run this command on all instances
98
98
  if !checked && command != :interactive_ssh
99
- execute_check(:medium) if ssh_opts[:user] == "root"
99
+ execute_check(:medium) if rye_opts[:user] == "root"
100
100
  checked = true
101
101
  end
102
102
 
103
103
  # Open the connection and run the command
104
- rbox = Rye::Box.new(inst.dns_public, ssh_opts)
104
+ rbox = Rye::Box.new(inst.dns_public, rye_opts)
105
105
  ret = rbox.send(command, command_args)
106
106
  puts ret unless command == :interactive_ssh
107
107
  end
@@ -123,11 +123,11 @@ module AWS; module EC2;
123
123
  opts[:id] &&= [opts[:id]].flatten
124
124
 
125
125
  # Options to be sent to Net::SSH
126
- ssh_opts = { :user => @global.user || Rudy.sysinfo.user, :debug => nil }
126
+ rye_opts = { :user => @global.user || Rudy.sysinfo.user, :debug => nil }
127
127
  if @@global.pkey
128
128
  raise "Cannot find file #{@@global.pkey}" unless File.exists?(@@global.pkey)
129
129
  raise InsecureKeyPermissions, @@global.pkey unless File.stat(@@global.pkey).mode == 33152
130
- ssh_opts[:keys] = @@global.pkey
130
+ rye_opts[:keys] = @@global.pkey
131
131
  end
132
132
 
133
133
  opts[:paths] = @argv
@@ -141,11 +141,11 @@ module AWS; module EC2;
141
141
 
142
142
  # Options to be sent to Rye::Box
143
143
  info = @@global.quiet ? nil : STDERR
144
- ssh_opts = { :user => @global.user || Rudy.sysinfo.user, :info => info }
144
+ rye_opts = { :user => @global.user || Rudy.sysinfo.user, :info => info }
145
145
  if @@global.pkey
146
146
  raise "Cannot find file #{@@global.pkey}" unless File.exists?(@@global.pkey)
147
147
  raise InsecureKeyPermissions, @@global.pkey unless File.stat(@@global.pkey).mode == 33152
148
- ssh_opts[:keys] = @@global.pkey
148
+ rye_opts[:keys] = @@global.pkey
149
149
  end
150
150
 
151
151
 
@@ -159,9 +159,9 @@ module AWS; module EC2;
159
159
 
160
160
  # Print header
161
161
  if @@global.quiet
162
- print "You are #{ssh_opts[:user].bright}. " if !checked # only the 1st
162
+ print "You are #{rye_opts[:user].bright}. " if !checked # only the 1st
163
163
  else
164
- print "Connecting #{ssh_opts[:user].bright}@#{inst.dns_public} "
164
+ print "Connecting #{rye_opts[:user].bright}@#{inst.dns_public} "
165
165
  puts "(#{inst.awsid}, groups: #{inst.groups.join(', ')})"
166
166
  end
167
167
 
@@ -172,7 +172,7 @@ module AWS; module EC2;
172
172
  end
173
173
 
174
174
  # Open the connection and run the command
175
- rbox = Rye::Box.new(inst.dns_public, ssh_opts)
175
+ rbox = Rye::Box.new(inst.dns_public, rye_opts)
176
176
  rbox.send(opts[:task], opts[:paths], opts[:dest])
177
177
  end
178
178