knife-bluebox 0.5.0 → 0.5.7
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/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
= Knife
|
2
|
-
This is the official Opscode Knife plugin for
|
3
|
-
This plugin gives knife the ability to create, bootstrap, and manage
|
1
|
+
= Knife Blue Box
|
2
|
+
This is the official Opscode Knife plugin for {Blue Box}[http://www.bluebox.net].
|
3
|
+
This plugin gives knife the ability to create, bootstrap, and manage Blue Box
|
4
4
|
servers.
|
5
5
|
|
6
6
|
== Installation
|
@@ -25,6 +25,12 @@ class Chef
|
|
25
25
|
class Knife
|
26
26
|
class BlueboxImagesList < Knife
|
27
27
|
|
28
|
+
deps do
|
29
|
+
require 'fog'
|
30
|
+
require 'highline'
|
31
|
+
require 'chef/json_compat'
|
32
|
+
end
|
33
|
+
|
28
34
|
banner "knife bluebox images list"
|
29
35
|
|
30
36
|
def highline
|
@@ -32,7 +38,8 @@ class Chef
|
|
32
38
|
end
|
33
39
|
|
34
40
|
def run
|
35
|
-
bluebox = Fog::
|
41
|
+
bluebox = Fog::Compute.new(
|
42
|
+
:provider => 'Bluebox',
|
36
43
|
:bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
|
37
44
|
:bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
|
38
45
|
)
|
@@ -16,15 +16,23 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'fog'
|
20
19
|
require 'chef/knife'
|
21
|
-
require 'chef/knife/bootstrap'
|
22
|
-
require 'chef/json_compat'
|
23
20
|
|
24
21
|
class Chef
|
25
22
|
class Knife
|
26
23
|
class BlueboxServerCreate < Knife
|
27
24
|
|
25
|
+
deps do
|
26
|
+
require 'chef/knife/bootstrap'
|
27
|
+
Chef::Knife::Bootstrap.load_deps
|
28
|
+
require 'fog'
|
29
|
+
require 'socket'
|
30
|
+
require 'net/ssh/multi'
|
31
|
+
require 'readline'
|
32
|
+
require 'highline'
|
33
|
+
require 'chef/json_compat'
|
34
|
+
end
|
35
|
+
|
28
36
|
banner "knife bluebox server create [RUN LIST...] (options)"
|
29
37
|
|
30
38
|
option :flavor,
|
@@ -33,6 +41,11 @@ class Chef
|
|
33
41
|
:description => "The flavor of server",
|
34
42
|
:default => "94fd37a7-2606-47f7-84d5-9000deda52ae"
|
35
43
|
|
44
|
+
option :chef_node_name,
|
45
|
+
:short => "-N NAME",
|
46
|
+
:long => "--node-name NAME",
|
47
|
+
:description => "The Chef node name for your new node"
|
48
|
+
|
36
49
|
option :image,
|
37
50
|
:short => "-i IMAGE",
|
38
51
|
:long => "--image IMAGE",
|
@@ -56,6 +69,27 @@ class Chef
|
|
56
69
|
:description => "Disables the bootstrapping process.",
|
57
70
|
:default => true
|
58
71
|
|
72
|
+
option :distro,
|
73
|
+
:short => "-d DISTRO",
|
74
|
+
:long => "--distro DISTRO",
|
75
|
+
:description => "Bootstrap a distro using a template",
|
76
|
+
:default => "ubuntu10.04-gems"
|
77
|
+
|
78
|
+
option :identity_file,
|
79
|
+
:short => "-I IDENTITY_FILE",
|
80
|
+
:long => "--identity-file IDENTITY_FILE",
|
81
|
+
:description => "The SSH identity file used for authentication"
|
82
|
+
|
83
|
+
option :load_balancer,
|
84
|
+
:short => "-b LB",
|
85
|
+
:long => "--load_balancer LB",
|
86
|
+
:description => "Adds server to the specified load balanced application."
|
87
|
+
|
88
|
+
option :block_startup_timeout,
|
89
|
+
:long => "--block_startup_timeout TIME",
|
90
|
+
:description => "Amount of time fog should wait before aborting server deployment.",
|
91
|
+
:default => 10 * 60
|
92
|
+
|
59
93
|
def h
|
60
94
|
@highline ||= HighLine.new
|
61
95
|
end
|
@@ -67,22 +101,24 @@ class Chef
|
|
67
101
|
require 'readline'
|
68
102
|
require 'erb'
|
69
103
|
|
70
|
-
bluebox = Fog::
|
104
|
+
bluebox = Fog::Compute.new(
|
105
|
+
:provider => 'Bluebox',
|
71
106
|
:bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
|
72
107
|
:bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
|
73
108
|
)
|
74
109
|
|
75
|
-
|
110
|
+
flavors = bluebox.flavors.inject({}) { |h,f| h[f.id] = f.description; h }
|
76
111
|
images = bluebox.images.inject({}) { |h,i| h[i.id] = i.description; h }
|
77
112
|
|
78
113
|
puts "#{h.color("Deploying a new Blue Box Block...", :green)}\n\n"
|
79
114
|
server_args = {
|
80
115
|
:flavor_id => config[:flavor],
|
81
116
|
:image_id => config[:image],
|
82
|
-
:
|
83
|
-
:password => config[:password]
|
117
|
+
:username => config[:username],
|
118
|
+
:password => config[:password],
|
119
|
+
:lb_applications => config[:load_balancer]
|
84
120
|
}
|
85
|
-
server_args[:
|
121
|
+
server_args[:public_key] = Chef::Config[:knife][:ssh_key] if Chef::Config[:knife][:ssh_key]
|
86
122
|
|
87
123
|
server = bluebox.servers.new(server_args)
|
88
124
|
response = server.save
|
@@ -92,23 +128,24 @@ class Chef
|
|
92
128
|
begin
|
93
129
|
|
94
130
|
# Make sure we could properly queue the server for creation on BBG.
|
95
|
-
raise Fog::Bluebox::BlockInstantiationError if server.
|
131
|
+
raise Fog::Compute::Bluebox::BlockInstantiationError if server.state != "queued"
|
96
132
|
puts "#{h.color("Hostname", :cyan)}: #{server.hostname}"
|
97
|
-
puts "#{h.color("Server Status", :cyan)}: #{server.
|
133
|
+
puts "#{h.color("Server Status", :cyan)}: #{server.state.capitalize}"
|
98
134
|
puts "#{h.color("Flavor", :cyan)}: #{flavors[server.flavor_id]}"
|
99
135
|
puts "#{h.color("Image", :cyan)}: #{images[server.image_id]}"
|
100
136
|
puts "#{h.color("IP Address", :cyan)}: #{server.ips[0]['address']}"
|
137
|
+
puts "#{h.color("Load Balanced Applications", :cyan)}: #{server.lb_applications.collect { |x| x['lb_application_name'] }.join(", ")}" unless server.lb_applications.empty?
|
101
138
|
|
102
139
|
# The server was succesfully queued... Now wait for it to spin up...
|
103
140
|
print "\n#{h.color("Requesting status of #{server.hostname}\n", :magenta)}"
|
104
141
|
|
105
|
-
#
|
106
|
-
# ready? will raise Fog::Bluebox::BlockInstantiationError if block creation fails.
|
107
|
-
unless server.wait_for(
|
142
|
+
# Define a timeout and ensure the block starts up in the specified amount of time:
|
143
|
+
# ready? will raise Fog::Bluebox::Compute::BlockInstantiationError if block creation fails.
|
144
|
+
unless server.wait_for( config[:block_startup_timeout] ){ print "."; STDOUT.flush; ready? }
|
108
145
|
|
109
|
-
# The server wasn't started in
|
146
|
+
# The server wasn't started in specified timeout ... Send a destroy call to make sure it doesn't spin up on us later.
|
110
147
|
server.destroy
|
111
|
-
raise Fog::Bluebox::BlockInstantiationError, "BBG server not available after
|
148
|
+
raise Fog::Compute::Bluebox::BlockInstantiationError, "BBG server not available after #{config[:block_startup_timeout]} seconds."
|
112
149
|
|
113
150
|
else
|
114
151
|
print "\n\n#{h.color("BBG Server startup succesful. Accessible at #{server.hostname}\n", :green)}"
|
@@ -134,6 +171,7 @@ class Chef
|
|
134
171
|
bootstrap.config[:identity_file] = config[:identity_file]
|
135
172
|
bootstrap.config[:chef_node_name] = config[:chef_node_name] || server.hostname
|
136
173
|
bootstrap.config[:use_sudo] = true
|
174
|
+
bootstrap.config[:distro] = config[:distro]
|
137
175
|
bootstrap.run
|
138
176
|
rescue Errno::ECONNREFUSED
|
139
177
|
puts h.color("Connection refused on SSH, retrying - CTRL-C to abort")
|
@@ -147,7 +185,7 @@ class Chef
|
|
147
185
|
|
148
186
|
end
|
149
187
|
|
150
|
-
rescue Fog::Bluebox::BlockInstantiationError => e
|
188
|
+
rescue Fog::Compute::Bluebox::BlockInstantiationError => e
|
151
189
|
|
152
190
|
puts "\n\n#{h.color("Encountered error starting up BBG block. Auto destroy called. Please try again.", :red)}"
|
153
191
|
|
@@ -16,24 +16,28 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'fog'
|
20
|
-
require 'highline'
|
21
|
-
require 'readline'
|
22
19
|
require 'chef/knife'
|
23
|
-
require 'chef/json_compat'
|
24
20
|
|
25
21
|
class Chef
|
26
22
|
class Knife
|
27
23
|
class BlueboxServerDelete < Knife
|
28
24
|
|
25
|
+
deps do
|
26
|
+
require 'fog'
|
27
|
+
require 'highline'
|
28
|
+
require 'readline'
|
29
|
+
require 'chef/json_compat'
|
30
|
+
end
|
31
|
+
|
29
32
|
banner "knife bluebox server delete BLOCK-HOSTNAME"
|
30
33
|
|
31
|
-
|
34
|
+
def h
|
32
35
|
@highline ||= HighLine.new
|
33
36
|
end
|
34
37
|
|
35
38
|
def run
|
36
|
-
bluebox = Fog::
|
39
|
+
bluebox = Fog::Compute.new(
|
40
|
+
:provider => 'Bluebox',
|
37
41
|
:bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
|
38
42
|
:bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
|
39
43
|
)
|
@@ -26,6 +26,13 @@ class Chef
|
|
26
26
|
class Knife
|
27
27
|
class BlueboxServerList < Knife
|
28
28
|
|
29
|
+
deps do
|
30
|
+
require 'fog'
|
31
|
+
require 'highline'
|
32
|
+
require 'readline'
|
33
|
+
require 'chef/json_compat'
|
34
|
+
end
|
35
|
+
|
29
36
|
banner "knife bluebox server list (options)"
|
30
37
|
|
31
38
|
def h
|
@@ -33,7 +40,8 @@ class Chef
|
|
33
40
|
end
|
34
41
|
|
35
42
|
def run
|
36
|
-
bluebox = Fog::
|
43
|
+
bluebox = Fog::Compute.new(
|
44
|
+
:provider => 'Bluebox',
|
37
45
|
:bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
|
38
46
|
:bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
|
39
47
|
)
|
metadata
CHANGED
@@ -1,50 +1,46 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-bluebox
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.7
|
4
5
|
prerelease:
|
5
|
-
version: 0.5.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Adam Jacob
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: chef
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2156629200 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
24
21
|
version: 0.9.14
|
25
22
|
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: fog
|
29
23
|
prerelease: false
|
30
|
-
|
24
|
+
version_requirements: *2156629200
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: fog
|
27
|
+
requirement: &2156628360 !ruby/object:Gem::Requirement
|
31
28
|
none: false
|
32
|
-
requirements:
|
29
|
+
requirements:
|
33
30
|
- - ~>
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.1.2
|
36
33
|
type: :runtime
|
37
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2156628360
|
38
36
|
description: BlueBox Support for Chef's Knife Command
|
39
37
|
email: adam@opscode.com
|
40
38
|
executables: []
|
41
|
-
|
42
39
|
extensions: []
|
43
|
-
|
44
|
-
extra_rdoc_files:
|
40
|
+
extra_rdoc_files:
|
45
41
|
- README.rdoc
|
46
42
|
- LICENSE
|
47
|
-
files:
|
43
|
+
files:
|
48
44
|
- LICENSE
|
49
45
|
- README.rdoc
|
50
46
|
- lib/chef/knife/bluebox_images_list.rb
|
@@ -52,33 +48,28 @@ files:
|
|
52
48
|
- lib/chef/knife/bluebox_server_delete.rb
|
53
49
|
- lib/chef/knife/bluebox_server_list.rb
|
54
50
|
- lib/knife-bluebox/version.rb
|
55
|
-
has_rdoc: true
|
56
51
|
homepage: http://wiki.opscode.com/display/chef
|
57
52
|
licenses: []
|
58
|
-
|
59
53
|
post_install_message:
|
60
54
|
rdoc_options: []
|
61
|
-
|
62
|
-
require_paths:
|
55
|
+
require_paths:
|
63
56
|
- lib
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
58
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
64
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version:
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
76
69
|
requirements: []
|
77
|
-
|
78
70
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.6
|
71
|
+
rubygems_version: 1.8.6
|
80
72
|
signing_key:
|
81
73
|
specification_version: 3
|
82
74
|
summary: BlueBox Support for Chef's Knife Command
|
83
75
|
test_files: []
|
84
|
-
|