knife-ec2 0.5.2 → 0.5.3
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.
@@ -17,11 +17,14 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/knife'
|
20
|
-
require 'chef/json_compat'
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Knife
|
24
23
|
class Ec2InstanceData < Knife
|
24
|
+
|
25
|
+
deps do
|
26
|
+
require 'chef/json_compat'
|
27
|
+
end
|
25
28
|
|
26
29
|
banner "knife ec2 instance data (options)"
|
27
30
|
|
@@ -45,7 +48,7 @@ class Chef
|
|
45
48
|
"attributes" => { "run_list" => config[:run_list] }
|
46
49
|
}
|
47
50
|
data = edit_data(data) if config[:edit]
|
48
|
-
output(data)
|
51
|
+
ui.output(data)
|
49
52
|
end
|
50
53
|
end
|
51
54
|
end
|
@@ -16,22 +16,20 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'fog'
|
20
|
-
require 'socket'
|
21
19
|
require 'chef/knife'
|
22
|
-
require 'chef/knife/bootstrap'
|
23
|
-
require 'chef/json_compat'
|
24
20
|
|
25
21
|
class Chef
|
26
22
|
class Knife
|
27
23
|
class Ec2ServerCreate < Knife
|
28
24
|
|
29
25
|
deps do
|
26
|
+
require 'chef/knife/bootstrap'
|
30
27
|
Chef::Knife::Bootstrap.load_deps
|
31
28
|
require 'fog'
|
32
|
-
require '
|
29
|
+
require 'socket'
|
33
30
|
require 'net/ssh/multi'
|
34
31
|
require 'readline'
|
32
|
+
require 'chef/json_compat'
|
35
33
|
end
|
36
34
|
|
37
35
|
banner "knife ec2 server create (options)"
|
@@ -154,10 +152,6 @@ class Chef
|
|
154
152
|
:boolean => true,
|
155
153
|
:default => false
|
156
154
|
|
157
|
-
def h
|
158
|
-
@highline ||= HighLine.new
|
159
|
-
end
|
160
|
-
|
161
155
|
def tcp_test_ssh(hostname)
|
162
156
|
tcp_socket = TCPSocket.new(hostname, 22)
|
163
157
|
readable = IO.select([tcp_socket], nil, nil, 5)
|
@@ -226,15 +220,15 @@ class Chef
|
|
226
220
|
end
|
227
221
|
server = connection.servers.create(server_def)
|
228
222
|
|
229
|
-
puts "#{
|
230
|
-
puts "#{
|
231
|
-
puts "#{
|
232
|
-
puts "#{
|
233
|
-
puts "#{
|
234
|
-
puts "#{
|
235
|
-
puts "#{
|
223
|
+
puts "#{ui.color("Instance ID", :cyan)}: #{server.id}"
|
224
|
+
puts "#{ui.color("Flavor", :cyan)}: #{server.flavor_id}"
|
225
|
+
puts "#{ui.color("Image", :cyan)}: #{server.image_id}"
|
226
|
+
puts "#{ui.color("Availability Zone", :cyan)}: #{server.availability_zone}"
|
227
|
+
puts "#{ui.color("Security Groups", :cyan)}: #{server.groups.join(", ")}"
|
228
|
+
puts "#{ui.color("SSH Key", :cyan)}: #{server.key_name}"
|
229
|
+
puts "#{ui.color("Subnet ID", :cyan)}: #{server.subnet_id}" if vpc_mode?
|
236
230
|
|
237
|
-
print "\n#{
|
231
|
+
print "\n#{ui.color("Waiting for server", :magenta)}"
|
238
232
|
|
239
233
|
display_name = if vpc_mode?
|
240
234
|
server.private_ip_address
|
@@ -248,13 +242,13 @@ class Chef
|
|
248
242
|
puts("\n")
|
249
243
|
|
250
244
|
if !vpc_mode?
|
251
|
-
puts "#{
|
252
|
-
puts "#{
|
253
|
-
puts "#{
|
245
|
+
puts "#{ui.color("Public DNS Name", :cyan)}: #{server.dns_name}"
|
246
|
+
puts "#{ui.color("Public IP Address", :cyan)}: #{server.public_ip_address}"
|
247
|
+
puts "#{ui.color("Private DNS Name", :cyan)}: #{server.private_dns_name}"
|
254
248
|
end
|
255
|
-
puts "#{
|
249
|
+
puts "#{ui.color("Private IP Address", :cyan)}: #{server.private_ip_address}"
|
256
250
|
|
257
|
-
print "\n#{
|
251
|
+
print "\n#{ui.color("Waiting for sshd", :magenta)}"
|
258
252
|
|
259
253
|
ip_to_test = vpc_mode? ? server.private_ip_address : server.public_ip_address
|
260
254
|
print(".") until tcp_test_ssh(ip_to_test) {
|
@@ -265,36 +259,36 @@ class Chef
|
|
265
259
|
bootstrap_for_node(server).run
|
266
260
|
|
267
261
|
puts "\n"
|
268
|
-
puts "#{
|
269
|
-
puts "#{
|
270
|
-
puts "#{
|
271
|
-
puts "#{
|
272
|
-
puts "#{
|
262
|
+
puts "#{ui.color("Instance ID", :cyan)}: #{server.id}"
|
263
|
+
puts "#{ui.color("Flavor", :cyan)}: #{server.flavor_id}"
|
264
|
+
puts "#{ui.color("Image", :cyan)}: #{server.image_id}"
|
265
|
+
puts "#{ui.color("Availability Zone", :cyan)}: #{server.availability_zone}"
|
266
|
+
puts "#{ui.color("Security Groups", :cyan)}: #{server.groups.join(", ")}"
|
273
267
|
if vpc_mode?
|
274
|
-
puts "#{
|
268
|
+
puts "#{ui.color("Subnet ID", :cyan)}: #{server.subnet_id}"
|
275
269
|
else
|
276
|
-
puts "#{
|
277
|
-
puts "#{
|
278
|
-
puts "#{
|
270
|
+
puts "#{ui.color("Public DNS Name", :cyan)}: #{server.dns_name}"
|
271
|
+
puts "#{ui.color("Public IP Address", :cyan)}: #{server.public_ip_address}"
|
272
|
+
puts "#{ui.color("Private DNS Name", :cyan)}: #{server.private_dns_name}"
|
279
273
|
end
|
280
|
-
puts "#{
|
281
|
-
puts "#{
|
282
|
-
puts "#{
|
274
|
+
puts "#{ui.color("SSH Key", :cyan)}: #{server.key_name}"
|
275
|
+
puts "#{ui.color("Private IP Address", :cyan)}: #{server.private_ip_address}"
|
276
|
+
puts "#{ui.color("Root Device Type", :cyan)}: #{server.root_device_type}"
|
283
277
|
if server.root_device_type == "ebs"
|
284
278
|
device_map = server.block_device_mapping.first
|
285
|
-
puts "#{
|
286
|
-
puts "#{
|
287
|
-
puts "#{
|
279
|
+
puts "#{ui.color("Root Volume ID", :cyan)}: #{device_map['volumeId']}"
|
280
|
+
puts "#{ui.color("Root Device Name", :cyan)}: #{device_map['deviceName']}"
|
281
|
+
puts "#{ui.color("Root Device Delete on Terminate", :cyan)}: #{device_map['deleteOnTermination']}"
|
288
282
|
if config[:ebs_size]
|
289
283
|
if ami.block_device_mapping.first['volumeSize'].to_i < config[:ebs_size].to_i
|
290
|
-
puts ("#{
|
284
|
+
puts ("#{ui.color("Warning", :yellow)}: #{config[:ebs_size]}GB " +
|
291
285
|
"EBS volume size is larger than size set in AMI of " +
|
292
286
|
"#{ami.block_device_mapping.first['volumeSize']}GB.\n" +
|
293
287
|
"Use file system tools to make use of the increased volume size.")
|
294
288
|
end
|
295
289
|
end
|
296
290
|
end
|
297
|
-
puts "#{
|
291
|
+
puts "#{ui.color("Run List", :cyan)}: #{config[:run_list].join(', ')}"
|
298
292
|
end
|
299
293
|
|
300
294
|
def bootstrap_for_node(server)
|
@@ -17,12 +17,18 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/knife'
|
20
|
-
require 'chef/json_compat'
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Knife
|
24
23
|
class Ec2ServerDelete < Knife
|
25
24
|
|
25
|
+
deps do
|
26
|
+
require 'fog'
|
27
|
+
require 'net/ssh/multi'
|
28
|
+
require 'readline'
|
29
|
+
require 'chef/json_compat'
|
30
|
+
end
|
31
|
+
|
26
32
|
banner "knife ec2 server delete SERVER [SERVER] (options)"
|
27
33
|
|
28
34
|
option :aws_access_key_id,
|
@@ -43,16 +49,7 @@ class Chef
|
|
43
49
|
:default => "us-east-1",
|
44
50
|
:proc => Proc.new { |key| Chef::Config[:knife][:region] = key }
|
45
51
|
|
46
|
-
def h
|
47
|
-
@highline ||= HighLine.new
|
48
|
-
end
|
49
|
-
|
50
52
|
def run
|
51
|
-
require 'fog'
|
52
|
-
require 'highline'
|
53
|
-
require 'net/ssh/multi'
|
54
|
-
require 'readline'
|
55
|
-
|
56
53
|
connection = Fog::Compute.new(
|
57
54
|
:provider => 'AWS',
|
58
55
|
:aws_access_key_id => Chef::Config[:knife][:aws_access_key_id],
|
@@ -79,13 +76,13 @@ class Chef
|
|
79
76
|
|
80
77
|
server.destroy
|
81
78
|
|
82
|
-
|
79
|
+
ui.warn("Deleted server #{server.id}")
|
83
80
|
end
|
84
81
|
end
|
85
82
|
|
86
83
|
def msg(label, value)
|
87
84
|
if value && !value.empty?
|
88
|
-
puts "#{
|
85
|
+
puts "#{ui.color(label, :cyan)}: #{value}"
|
89
86
|
end
|
90
87
|
end
|
91
88
|
|
@@ -17,12 +17,18 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/knife'
|
20
|
-
require 'chef/json_compat'
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Knife
|
24
23
|
class Ec2ServerList < Knife
|
25
24
|
|
25
|
+
deps do
|
26
|
+
require 'fog'
|
27
|
+
require 'net/ssh/multi'
|
28
|
+
require 'readline'
|
29
|
+
require 'chef/json_compat'
|
30
|
+
end
|
31
|
+
|
26
32
|
banner "knife ec2 server list (options)"
|
27
33
|
|
28
34
|
option :aws_access_key_id,
|
@@ -43,16 +49,7 @@ class Chef
|
|
43
49
|
:default => "us-east-1",
|
44
50
|
:proc => Proc.new { |key| Chef::Config[:knife][:region] = key }
|
45
51
|
|
46
|
-
def h
|
47
|
-
@highline ||= HighLine.new
|
48
|
-
end
|
49
|
-
|
50
52
|
def run
|
51
|
-
require 'fog'
|
52
|
-
require 'highline'
|
53
|
-
require 'net/ssh/multi'
|
54
|
-
require 'readline'
|
55
|
-
|
56
53
|
$stdout.sync = true
|
57
54
|
|
58
55
|
connection = Fog::Compute.new(
|
@@ -63,24 +60,24 @@ class Chef
|
|
63
60
|
)
|
64
61
|
|
65
62
|
server_list = [
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
63
|
+
ui.color('Instance ID', :bold),
|
64
|
+
ui.color('Public IP', :bold),
|
65
|
+
ui.color('Private IP', :bold),
|
66
|
+
ui.color('Flavor', :bold),
|
67
|
+
ui.color('Image', :bold),
|
68
|
+
ui.color('Security Groups', :bold),
|
69
|
+
ui.color('State', :bold)
|
73
70
|
]
|
74
71
|
connection.servers.all.each do |server|
|
75
72
|
server_list << server.id.to_s
|
76
|
-
server_list << (server.
|
73
|
+
server_list << (server.public_ip_address == nil ? "" : server.public_ip_address)
|
77
74
|
server_list << (server.private_ip_address == nil ? "" : server.private_ip_address)
|
78
75
|
server_list << (server.flavor_id == nil ? "" : server.flavor_id)
|
79
76
|
server_list << (server.image_id == nil ? "" : server.image_id)
|
80
77
|
server_list << server.groups.join(", ")
|
81
78
|
server_list << server.state
|
82
79
|
end
|
83
|
-
puts
|
80
|
+
puts ui.list(server_list, :columns_across, 7)
|
84
81
|
|
85
82
|
end
|
86
83
|
end
|
data/lib/knife-ec2/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: knife-ec2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adam Jacob
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-04-05 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -46,17 +46,6 @@ dependencies:
|
|
46
46
|
version: 1.0.1
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id003
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: highline
|
51
|
-
prerelease: false
|
52
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
|
-
requirements:
|
55
|
-
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 1.6.1
|
58
|
-
type: :runtime
|
59
|
-
version_requirements: *id004
|
60
49
|
description: EC2 Support for Chef's Knife Command
|
61
50
|
email: adam@opscode.com
|
62
51
|
executables: []
|