knife-rightscale 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -1
- data/Gemfile +2 -0
- data/README.md +45 -35
- data/Rakefile +14 -2
- data/knife-rightscale.gemspec +5 -1
- data/lib/chef/knife/rightscale_base.rb +26 -13
- data/lib/chef/knife/rightscale_cloud_list.rb +1 -1
- data/lib/chef/knife/rightscale_deployment_list.rb +1 -1
- data/lib/chef/knife/rightscale_image_list.rb +1 -1
- data/lib/chef/knife/rightscale_securitygroup_list.rb +7 -6
- data/lib/chef/knife/rightscale_server_create.rb +39 -23
- data/lib/chef/knife/rightscale_server_list.rb +1 -1
- data/lib/chef/knife/rightscale_servertemplate_list.rb +1 -1
- data/lib/{right_api_provision/exception.rb → chef/knife/rightscale_version.rb} +16 -4
- data/lib/knife-rightscale.rb +1 -2
- data/lib/knife-rightscale/version.rb +1 -1
- data/spec/chef/knife/rightscale_server_create_spec.rb +22 -6
- data/test/create_server_test.rb +27 -23
- data/test/list_actions_test.rb +7 -7
- metadata +79 -16
- checksums.yaml +0 -15
- data/lib/right_api_provision/api15.rb +0 -372
- data/lib/right_api_provision/provisioner.rb +0 -139
- data/lib/right_api_provision/version.rb +0 -21
- data/spec/right_api_provision/api15_spec.rb +0 -203
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,60 +1,54 @@
|
|
1
1
|
# Knife RightScale
|
2
2
|
|
3
|
-
This is a Knife plugin for RightScale. This plugin gives knife the ability to
|
4
|
-
provision servers on clouds managed by the RightScale platform. It is expected
|
5
|
-
that you already have a Chef Server running or are using a hosted Chef solution
|
3
|
+
This is a Knife plugin for RightScale. This plugin gives knife the ability to
|
4
|
+
provision servers on clouds managed by the RightScale platform. It is expected
|
5
|
+
that you already have a Chef Server running or are using a hosted Chef solution
|
6
6
|
from OpsCode.
|
7
7
|
|
8
8
|
NOTE: this plugin is currently under development and subject to change
|
9
9
|
|
10
10
|
## REQUIREMENTS:
|
11
11
|
|
12
|
-
You will need a RightScale account with at least one cloud registered. You can
|
13
|
-
sign up for a free trial account [here](https://www.rightscale.com).
|
14
|
-
|
15
|
-
I was lazy and only added support for the RightScale API 1.5 (since API 1.0 is
|
16
|
-
EC2 only and deprecated). As such, this plugin cannot currently provision
|
17
|
-
servers on EC2. If you need this capability and would like to part in a private
|
18
|
-
beta to enable that functionality, please contact support@rightscale.com and
|
19
|
-
they will hook you up. If you have any problems, please send me an email
|
20
|
-
directly.
|
12
|
+
You will need a RightScale account with at least one cloud registered. You can
|
13
|
+
sign up for a free trial account [here](https://www.rightscale.com).
|
21
14
|
|
22
15
|
You will also need a running Chef Server. If you don't already have one you can
|
23
16
|
sign up for a free trial of Hosted Chef from Opscode [here](http://www.opscode.com/hosted-chef/).
|
24
17
|
|
18
|
+
If you have an existing account and want to provision on EC2 clouds, you may need to migrate your account to the Unified Cloud Platform. Please see [here](http://support.rightscale.com/Announcements/2013-09-20_Unified_Cloud_Platform_Migration_Details) for more info on UCP.
|
25
19
|
|
26
20
|
## INSTALLATION:
|
27
21
|
|
28
22
|
Be sure you are running the latest version Chef 10. Versions earlier than 0.10.0
|
29
23
|
don't support plugins. This has not yet been tested with Chef 11.
|
30
24
|
|
31
|
-
gem install chef -v 10.
|
25
|
+
gem install chef -v 10.26.0
|
32
26
|
|
33
27
|
This plugin is distributed as a Ruby Gem. To install it, run:
|
34
28
|
|
35
29
|
gem install knife-rightscale
|
36
30
|
|
37
|
-
Depending on your system's configuration, you may need to run this command with
|
31
|
+
Depending on your system's configuration, you may need to run this command with
|
38
32
|
root privileges.
|
39
33
|
|
40
34
|
## CONFIGURATION:
|
41
35
|
|
42
|
-
In order to communicate with the RightScale API you will have to tell Knife
|
43
|
-
about your RightScale account information. The easiest way to accomplish this
|
36
|
+
In order to communicate with the RightScale API you will have to tell Knife
|
37
|
+
about your RightScale account information. The easiest way to accomplish this
|
44
38
|
is to create some entries in your <tt>knife.rb</tt> file:
|
45
39
|
|
46
40
|
knife[:rightscale_user] = "you@yourdomain.com"
|
47
41
|
knife[:rightscale_password] = "supersecretpassword"
|
48
42
|
knife[:rightscale_account_id] = "1234"
|
49
43
|
|
50
|
-
If your knife.rb file will be checked into a SCM system (
|
44
|
+
If your knife.rb file will be checked into a SCM system (i.e. readable by others)
|
51
45
|
you may want to read the values from environment variables:
|
52
46
|
|
53
47
|
knife[:rightscale_user] = "#{ENV['RIGHTSCALE_EMAIL']}"
|
54
48
|
knife[:rightscale_password] = "#{ENV['RIGHTSCALE_PASSWORD']}"
|
55
49
|
|
56
|
-
You also have the option of passing your RightScale credentials into the
|
57
|
-
individual knife subcommands using the <tt>-A</tt> (or <tt>--rightscale-account-id</tt>),
|
50
|
+
You also have the option of passing your RightScale credentials into the
|
51
|
+
individual knife subcommands using the <tt>-A</tt> (or <tt>--rightscale-account-id</tt>),
|
58
52
|
<tt>-U</tt> (or <tt>--rightscale-user</tt>), <tt>-P</tt> (or <tt>--rightscale-password</tt>) command options
|
59
53
|
|
60
54
|
## Provision a Server
|
@@ -72,18 +66,18 @@ to filter by partial name match use ```-n``` or ```--name``` option
|
|
72
66
|
List the ServerTemplates available in your account. Typically you will just want to find a Chef Client template. For example:
|
73
67
|
|
74
68
|
knife rightscale servertemplate list --name "Chef Client"
|
75
|
-
|
69
|
+
|
76
70
|
### Launch a server
|
77
71
|
To provision a new server, supply ServerTemplate choice and target cloud as options:
|
78
72
|
|
79
73
|
knife rightscale server create \
|
80
74
|
--cloud "Rackspace Open Cloud - Chicago" \
|
81
75
|
--server-template "Chef Client (v13.4)" \
|
82
|
-
--deployment "
|
83
|
-
--name "
|
76
|
+
--deployment "CP: My Sandbox" \
|
77
|
+
--name "CP:ChefClient" \
|
84
78
|
--input "chef/client/server_url":"text:https://api.opscode.com/organizations/kindsol" \
|
85
|
-
--input "chef/client/validation_name":"cred:
|
86
|
-
--input "chef/client/validator_pem":"cred:
|
79
|
+
--input "chef/client/validation_name":"cred:CP: validation_client_name" \
|
80
|
+
--input "chef/client/validator_pem":"cred:CP:validator.pem" \
|
87
81
|
--input "chef/client/node_name":"text:MyChefClient" \
|
88
82
|
--input "chef/client/roles":"text:hello_world"
|
89
83
|
|
@@ -105,15 +99,15 @@ use the ```--yes``` option to bypass confirmation.
|
|
105
99
|
|
106
100
|
## OTHER SUBCOMMANDS:
|
107
101
|
|
108
|
-
Some other subcommands that can be useful for provisioning servers are listed
|
109
|
-
below. These are intended to query possible options that you can pass to the
|
110
|
-
server create command.
|
102
|
+
Some other subcommands that can be useful for provisioning servers are listed
|
103
|
+
below. These are intended to query possible options that you can pass to the
|
104
|
+
server create command.
|
111
105
|
|
112
106
|
All supported command options can be found by invoking:
|
113
107
|
|
114
|
-
knife rightscale --help
|
108
|
+
knife rightscale --help
|
115
109
|
|
116
|
-
Specific details for each command can be found by passing the ```--help```
|
110
|
+
Specific details for each command can be found by passing the ```--help```
|
117
111
|
option the the subcommand. For example:
|
118
112
|
|
119
113
|
knife rightscale <subcommand> --help
|
@@ -127,7 +121,7 @@ List the supported images for a given ServerTemplate and target cloud
|
|
127
121
|
--cloud "Rackspace Open Cloud - Chicago"
|
128
122
|
|
129
123
|
This will also indicate the default Instance Type or flavor for each image.
|
130
|
-
|
124
|
+
|
131
125
|
|
132
126
|
### List Deployments
|
133
127
|
To list all the deployments available in your RightScale account:
|
@@ -142,7 +136,7 @@ To list all the Security Groups available per cloud:
|
|
142
136
|
|
143
137
|
knife rightscale securitygroup list
|
144
138
|
|
145
|
-
to filter by partial name match use the ```--name``` option or narrow the
|
139
|
+
to filter by partial name match use the ```--name``` option or narrow the
|
146
140
|
results using the ```--cloud``` option
|
147
141
|
|
148
142
|
|
@@ -153,6 +147,22 @@ To list all the servers in your RightScale account:
|
|
153
147
|
|
154
148
|
to filter by partial name match use the ```--name``` option
|
155
149
|
|
150
|
+
## DEVELOPMENT
|
151
|
+
|
152
|
+
You can develop this plugin with out installing it using the bundler gem. First clone this repository, change to the working directory and run:
|
153
|
+
|
154
|
+
bundle
|
155
|
+
|
156
|
+
Verify the unit test pass:
|
157
|
+
|
158
|
+
bundle exec rake spec
|
159
|
+
|
160
|
+
Once those are passing you can run the plugin using `bundle exec`. For example, to view the help message run:
|
161
|
+
|
162
|
+
bundle exec knife rightscale --help
|
163
|
+
|
164
|
+
Happy hacking!
|
165
|
+
|
156
166
|
|
157
167
|
## FUTURE FEATURES
|
158
168
|
* create action
|
@@ -163,11 +173,11 @@ to filter by partial name match use the ```--name``` option
|
|
163
173
|
** Private beta
|
164
174
|
* display audit entry when server strands
|
165
175
|
* ability to add server tags on create
|
166
|
-
* server array create action
|
167
|
-
* add timeout for operational
|
176
|
+
* server array create action
|
177
|
+
* add timeout for operational
|
168
178
|
* credentials list action (waiting for new API release)
|
169
179
|
* add VPC support to create action
|
170
|
-
|
180
|
+
|
171
181
|
|
172
182
|
## LICENSE:
|
173
183
|
|
@@ -176,7 +186,7 @@ Copyright:: Copyright (c) 2013 RightScale, Inc.
|
|
176
186
|
License:: Apache License, Version 2.0
|
177
187
|
See attribution notice in README.md
|
178
188
|
|
179
|
-
This readme is modified from the knife-ec2 plugin project code
|
189
|
+
This readme is modified from the knife-ec2 plugin project code
|
180
190
|
That project is located at https://github.com/opscode/knife-ec2
|
181
191
|
Author:: Adam Jacob (<adam@opscode.com>)
|
182
192
|
Copyright:: Copyright (c) 2009-2011 Opscode, Inc.
|
data/Rakefile
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require "bundler/gem_tasks"
|
2
|
-
|
3
1
|
#
|
4
2
|
# Author:: Cary Penniman (<cary@rightscale.com>)
|
5
3
|
# Copyright:: Copyright (c) 2013 RightScale, Inc.
|
@@ -17,6 +15,20 @@ require "bundler/gem_tasks"
|
|
17
15
|
# See the License for the specific language governing permissions and
|
18
16
|
# limitations under the License.
|
19
17
|
#
|
18
|
+
require "bundler/gem_tasks"
|
19
|
+
require "rdoc/task"
|
20
|
+
require "yard"
|
21
|
+
|
22
|
+
YARD::Rake::YardocTask.new do |t|
|
23
|
+
t.files = ['lib/**/*.rb']
|
24
|
+
end
|
25
|
+
|
26
|
+
Rake::RDocTask.new(:rdoc) do |rd|
|
27
|
+
rd.main = "README.doc"
|
28
|
+
rd.rdoc_files.include("README.md", "lib/**/*.rb")
|
29
|
+
rd.options << "--all"
|
30
|
+
end
|
31
|
+
|
20
32
|
require 'rspec/core/rake_task'
|
21
33
|
|
22
34
|
desc "Run all specs in spec directory"
|
data/knife-rightscale.gemspec
CHANGED
@@ -33,7 +33,11 @@ Gem::Specification.new do |gem|
|
|
33
33
|
gem.files = `git ls-files`.split($/)
|
34
34
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
35
35
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
36
|
-
gem.add_dependency "
|
36
|
+
gem.add_dependency "right_api_helper", ">= 1.1.2"
|
37
|
+
gem.add_dependency "rake"
|
38
|
+
gem.add_dependency "yard"
|
39
|
+
gem.add_dependency "rspec"
|
40
|
+
gem.add_dependency "chef"
|
37
41
|
|
38
42
|
gem.require_paths = ["lib"]
|
39
43
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Copyright:: Copyright (c) 2013 RightScale, Inc.
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
|
-
# This file is modified from the knife-ec2 plugin project code
|
6
|
+
# This file is modified from the knife-ec2 plugin project code
|
7
7
|
# That project is located at https://github.com/opscode/knife-ec2
|
8
8
|
# Author:: Seth Chisamore <schisamo@opscode.com>
|
9
9
|
# Copyright:: Copyright (c) 2011 Opscode, Inc.
|
@@ -22,8 +22,7 @@
|
|
22
22
|
# limitations under the License.
|
23
23
|
#
|
24
24
|
require 'chef/knife'
|
25
|
-
require '
|
26
|
-
require 'right_api_provision/api15'
|
25
|
+
require 'right_api_helper'
|
27
26
|
|
28
27
|
class Chef
|
29
28
|
class Knife
|
@@ -36,7 +35,7 @@ class Chef
|
|
36
35
|
includer.class_eval do
|
37
36
|
|
38
37
|
deps do
|
39
|
-
require '
|
38
|
+
require 'right_api_helper'
|
40
39
|
end
|
41
40
|
|
42
41
|
option :rightscale_user,
|
@@ -69,17 +68,31 @@ class Chef
|
|
69
68
|
|
70
69
|
def connection
|
71
70
|
@connection ||= begin
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
Chef::Config[:knife][:rightscale_password],
|
76
|
-
Chef::Config[:knife][:rightscale_account_id],
|
77
|
-
Chef::Config[:knife][:rightscale_api_url]
|
78
|
-
)
|
79
|
-
client
|
71
|
+
api_shim = RightApiHelper::API15.new(right_api_client)
|
72
|
+
set_log_level(api_shim)
|
73
|
+
api_shim
|
80
74
|
end
|
81
75
|
end
|
82
76
|
|
77
|
+
def right_api_client
|
78
|
+
@right_api_client ||= begin
|
79
|
+
session = RightApiHelper::Session.new
|
80
|
+
set_log_level(session)
|
81
|
+
right_api_client = session.create_client(
|
82
|
+
Chef::Config[:knife][:rightscale_user],
|
83
|
+
Chef::Config[:knife][:rightscale_password],
|
84
|
+
Chef::Config[:knife][:rightscale_account_id],
|
85
|
+
Chef::Config[:knife][:rightscale_api_url]
|
86
|
+
)
|
87
|
+
right_api_client
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def set_log_level(obj)
|
92
|
+
log_level = (config[:verbosity] >= 1) ? Logger::DEBUG : Logger::INFO
|
93
|
+
obj.log_level(log_level)
|
94
|
+
end
|
95
|
+
|
83
96
|
def locate_config_value(key)
|
84
97
|
key = key.to_sym
|
85
98
|
config[key] || Chef::Config[:knife][key]
|
@@ -96,7 +109,7 @@ class Chef
|
|
96
109
|
|
97
110
|
keys.each do |k|
|
98
111
|
pretty_key = k.to_s.gsub(/_/, ' ').gsub(/\w+/){ |w| (w =~ /(ssh)|(aws)/i) ? w.upcase : w.capitalize }
|
99
|
-
if Chef::Config[:knife][k].nil?
|
112
|
+
if Chef::Config[:knife][k].nil? && config[k].nil?
|
100
113
|
errors << "You did not provide a valid '#{pretty_key}' value."
|
101
114
|
end
|
102
115
|
end
|
@@ -25,15 +25,15 @@ class Chef
|
|
25
25
|
include Knife::RightscaleBase
|
26
26
|
|
27
27
|
deps do
|
28
|
-
require '
|
28
|
+
require 'right_api_helper'
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
option :security_group_name,
|
32
32
|
:short => "-n SECURITYGROUP_NAME",
|
33
33
|
:long => "--name SECURITYGROUP_NAME",
|
34
34
|
:description => "The partial name of the security group to search for",
|
35
35
|
:proc => Proc.new { |i| Chef::Config[:knife][:security_group_name] = i }
|
36
|
-
|
36
|
+
|
37
37
|
option :cloud_name,
|
38
38
|
:short => "-C CLOUD_NAME",
|
39
39
|
:long => "--cloud CLOUD_NAME",
|
@@ -54,9 +54,10 @@ class Chef
|
|
54
54
|
ui.color('Name', :bold),
|
55
55
|
ui.color('Resource UID', :bold)
|
56
56
|
].flatten.compact
|
57
|
-
|
57
|
+
|
58
58
|
output_column_count = security_group_list.length
|
59
59
|
@clouds.each do |cloud|
|
60
|
+
next unless connection.requires_security_groups?(cloud)
|
60
61
|
@security_groups = connection.list_security_groups(cloud, :by_name, config[:security_group_name])
|
61
62
|
@security_groups.each do |security_group|
|
62
63
|
security_group_list << cloud.name
|
@@ -66,13 +67,13 @@ class Chef
|
|
66
67
|
end
|
67
68
|
puts ui.list(security_group_list, :uneven_columns_across, output_column_count)
|
68
69
|
end
|
69
|
-
|
70
|
+
|
70
71
|
private
|
71
72
|
|
72
73
|
def validate!
|
73
74
|
super([:rightscale_user, :rightscale_password, :rightscale_account_id])
|
74
75
|
end
|
75
|
-
|
76
|
+
|
76
77
|
end
|
77
78
|
end
|
78
79
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Copyright:: Copyright (c) 2013 RightScale, Inc.
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
|
-
# This file is modified from the knife-ec2 plugin project code
|
6
|
+
# This file is modified from the knife-ec2 plugin project code
|
7
7
|
# That project is located at https://github.com/opscode/knife-ec2
|
8
8
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
9
9
|
# Author:: Seth Chisamore (<schisamo@opscode.com>)
|
@@ -32,7 +32,7 @@ class Chef
|
|
32
32
|
include Knife::RightscaleBase
|
33
33
|
|
34
34
|
deps do
|
35
|
-
require '
|
35
|
+
require 'right_api_helper'
|
36
36
|
end
|
37
37
|
|
38
38
|
banner "knife rightscale server create (options)"
|
@@ -50,8 +50,7 @@ class Chef
|
|
50
50
|
:short => "-s NAME",
|
51
51
|
:long => "--server-template NAME",
|
52
52
|
:description => "The name of the ServerTemplate or ID to use for the server",
|
53
|
-
:proc => Proc.new { |i| Chef::Config[:knife][:server_template] = i }
|
54
|
-
:required => true
|
53
|
+
:proc => Proc.new { |i| Chef::Config[:knife][:server_template] = i }
|
55
54
|
|
56
55
|
option :server_name,
|
57
56
|
:short => "-n SERVERNAME",
|
@@ -78,20 +77,20 @@ class Chef
|
|
78
77
|
:long => "--input NAME:VALUE",
|
79
78
|
:description => "An input name and value",
|
80
79
|
:proc => lambda { |o| k,v=o.split(":",2); @@inputs[k]=v }
|
81
|
-
|
80
|
+
|
82
81
|
option :ssh_key_name,
|
83
82
|
:short => "-S KEY_UUID",
|
84
83
|
:long => "--ssh-key KEY_UUID",
|
85
84
|
:description => "The AWS SSH key resource UUIS",
|
86
85
|
:proc => Proc.new { |key| Chef::Config[:knife][:ssh_key_uuid] = key }
|
87
|
-
|
86
|
+
|
88
87
|
# Gets applied to chef/client/roles input of ServerTemplate, if it exists
|
89
88
|
# option :run_list,
|
90
89
|
# :short => "-r RUN_LIST",
|
91
90
|
# :long => "--run-list RUN_LIST",
|
92
91
|
# :description => "Comma separated list of roles/recipes to apply.",
|
93
92
|
# :proc => lambda { |o| o.split(/[\s,]+/) }
|
94
|
-
#
|
93
|
+
#
|
95
94
|
# option :json_attributes,
|
96
95
|
# :short => "-j JSON",
|
97
96
|
# :long => "--json-attributes JSON",
|
@@ -102,7 +101,7 @@ class Chef
|
|
102
101
|
# :long => "--bootstrap-version VERSION",
|
103
102
|
# :description => "The version of Chef to install",
|
104
103
|
# :proc => Proc.new { |v| Chef::Config[:knife][:bootstrap_version] = v }
|
105
|
-
#
|
104
|
+
#
|
106
105
|
# option :chef_node_name,
|
107
106
|
# :short => "-N NAME",
|
108
107
|
# :long => "--node-name NAME",
|
@@ -114,19 +113,25 @@ class Chef
|
|
114
113
|
# :long => "--flavor FLAVOR",
|
115
114
|
# :description => "The flavor of server (m1.small, m1.medium, etc)",
|
116
115
|
# :proc => Proc.new { |f| Chef::Config[:knife][:flavor] = f }
|
117
|
-
#
|
116
|
+
#
|
118
117
|
# option :image,
|
119
118
|
# :short => "-I IMAGE",
|
120
119
|
# :long => "--image IMAGE",
|
121
120
|
# :description => "The AMI for the server",
|
122
121
|
# :proc => Proc.new { |i| Chef::Config[:knife][:image] = i }
|
123
|
-
#
|
122
|
+
#
|
124
123
|
option :security_groups,
|
125
124
|
:short => "-G X,Y,Z",
|
126
125
|
:long => "--groups X,Y,Z",
|
127
126
|
:description => "The security groups for this server; not allowed when using VPC",
|
128
127
|
:proc => Proc.new { |groups| groups.split(',') }
|
129
128
|
|
129
|
+
option :wait_for_operational,
|
130
|
+
:long => "--[no-]block",
|
131
|
+
:description => "Exit after server launch -- don't wait for operational. (non-blocking)",
|
132
|
+
:boolean => true,
|
133
|
+
:default => true
|
134
|
+
|
130
135
|
def run
|
131
136
|
$stdout.sync = true
|
132
137
|
|
@@ -139,27 +144,34 @@ class Chef
|
|
139
144
|
print "\n#{ui.color("Cloud:", :magenta)} #{config[:cloud_name]}"
|
140
145
|
print "\n#{ui.color("Deployment name:", :magenta)} #{config[:deployment_name]}"
|
141
146
|
print "\n#{ui.color("Inputs:", :magenta)} #{@@inputs}"
|
147
|
+
print "\n#{ui.color("Wait for Operational:", :magenta)} FALSE" if config[:no_wait]
|
142
148
|
print "\n"
|
143
|
-
|
144
|
-
rightscale =
|
149
|
+
|
150
|
+
rightscale = get_rightscale_provisioner
|
145
151
|
rightscale.provision(
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
152
|
+
config[:server_name],
|
153
|
+
config[:server_template],
|
154
|
+
config[:cloud_name],
|
155
|
+
config[:deployment_name],
|
156
|
+
@@inputs,
|
157
|
+
nil, # MCI not yet supported
|
158
|
+
config[:ssh_key_name],
|
159
|
+
config[:security_groups]
|
160
|
+
)
|
161
|
+
|
162
|
+
unless config[:wait_for_operational]
|
163
|
+
print "#{ui.color("Server launched -- exiting.", :green)}"
|
164
|
+
return
|
165
|
+
end
|
166
|
+
|
155
167
|
if rightscale.server_ready?
|
156
168
|
print "#{ui.color("Server already running", :green)}"
|
157
|
-
|
169
|
+
elsif
|
158
170
|
print "\n#{ui.color("Waiting for RightScale to configure server\n", :yellow)}"
|
159
171
|
rightscale.wait_for_operational
|
160
172
|
print "\n"
|
161
173
|
end
|
162
|
-
|
174
|
+
|
163
175
|
# output connection information
|
164
176
|
print "#{ui.color("Querying server info...\n", :magenta)}"
|
165
177
|
info = rightscale.server_info
|
@@ -172,6 +184,10 @@ class Chef
|
|
172
184
|
|
173
185
|
private
|
174
186
|
|
187
|
+
def get_rightscale_provisioner
|
188
|
+
RightApiHelper::Provisioner.new(right_api_client)
|
189
|
+
end
|
190
|
+
|
175
191
|
def validate!
|
176
192
|
super([:cloud_name, :deployment_name, :server_template, :rightscale_user, :rightscale_password, :rightscale_account_id])
|
177
193
|
end
|