knife-esx 0.2 → 0.2.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.
- data/CHANGELOG.md +10 -7
- data/lib/chef/knife/esx_vm_create.rb +11 -10
- data/lib/knife-esx/version.rb +1 -1
- metadata +12 -12
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# 0.2 - 2012/02/28
|
2
2
|
|
3
|
-
* Added --batch and --async options
|
3
|
+
* **Added --batch and --async options**
|
4
4
|
|
5
|
-
Inspired by spiceweasel from Matt Ray (https://github.com/mattray/spiceweasel), I've added a batch mode where a YAML file describes the VMs you want to bootstrap.
|
5
|
+
Inspired by spiceweasel from Matt Ray (https://github.com/mattray/spiceweasel), I've added a batch mode where a YAML file describes the VMs you want to bootstrap and where (you can deploy to multiple hypervisors).
|
6
6
|
|
7
7
|
knife esx vm create --batch batch.yml
|
8
8
|
|
@@ -43,23 +43,26 @@ If you want to bootstrap the VMs asynchronously, use the --async flag.
|
|
43
43
|
|
44
44
|
knife esx vm create --batch batch.yml --async
|
45
45
|
|
46
|
-
|
46
|
+
When using batch mode, standard output and error is redirected to /tmp/knife_esx_vm_create_VMNAME.log, so if we use the deploy script from above, three log files will be created:
|
47
47
|
|
48
48
|
/tmp/knife_esx_vm_create_test1.log
|
49
49
|
/tmp/knife_esx_vm_create_test2.log
|
50
50
|
/tmp/knife_esx_vm_create_test3.log
|
51
51
|
|
52
|
-
* Added --skip-bootstrap flag
|
52
|
+
* **Added --skip-bootstrap flag**
|
53
|
+
|
54
|
+
If the flag is used the VM will be created but
|
53
55
|
the bootstrap template/script won't be executed (it also means that Chef won't be installed).
|
54
56
|
|
55
|
-
* Fixed bug preventing knife-esx to create a VM when the hypervisor has an empty root password
|
57
|
+
* **Fixed bug preventing knife-esx to create a VM when the hypervisor has an empty root password.**
|
58
|
+
|
59
|
+
**KNOWN ISSUES**
|
56
60
|
|
57
|
-
KNOWN ISSUES
|
58
61
|
* To use --batch without --skip-bootstrap, the ssh user (--ssh-user) needs to be able to sudo without asking for a password (i.e. adding something like 'ubuntu ALL=(ALL) NOPASSWD: ALL' to /etc/sudoers in the appliance template) otherwise the bootstraping process won't work if more than one VM is being deployed.
|
59
62
|
|
60
63
|
# 0.1.5 - 2012/02/25
|
61
64
|
|
62
|
-
* Patch from @pperezrubio adding multiple networks support
|
65
|
+
* **Patch from @pperezrubio adding multiple networks and fixed MAC address support**
|
63
66
|
|
64
67
|
knife esx vm create --vm-disk ubuntu-oneiric.vmdk \
|
65
68
|
--vm-name testvm --datastore datastore1 \
|
@@ -20,6 +20,7 @@ require 'chef/knife/esx_base'
|
|
20
20
|
require 'open4'
|
21
21
|
require 'celluloid'
|
22
22
|
require 'singleton'
|
23
|
+
require 'yaml'
|
23
24
|
|
24
25
|
module KnifeESX
|
25
26
|
class DeployScript
|
@@ -108,18 +109,18 @@ module KnifeESX
|
|
108
109
|
optstring << " - #{k}:".ljust(25) + "#{v}\n" unless k =~ /password/
|
109
110
|
end
|
110
111
|
log_file = "/tmp/knife_esx_vm_create_#{@name.to_s.strip.chomp.gsub(/\s/,'_')}.log"
|
111
|
-
CLogger.instance.info! "Bootstrapping VM #{@name} \n#{optstring.join}"
|
112
|
-
CLogger.instance.info! "VM #{@name} bootstrap log: #{log_file}"
|
112
|
+
KnifeESX::CLogger.instance.info! "Bootstrapping VM #{@name} \n#{optstring.join}"
|
113
|
+
KnifeESX::CLogger.instance.info! "VM #{@name} bootstrap log: #{log_file}"
|
113
114
|
@status = Open4.popen4("knife esx vm create --vm-name #{@name} #{args} #{extra_args} > #{log_file} 2>&1") do |pid, stdin, stdout, stderr|
|
114
115
|
@out << stdout.read.strip
|
115
116
|
@err << stderr.read.strip
|
116
117
|
end
|
117
118
|
if @status == 0
|
118
|
-
CLogger.instance.info! "[#{@name}] deployment finished OK"
|
119
|
+
KnifeESX::CLogger.instance.info! "[#{@name}] deployment finished OK"
|
119
120
|
else
|
120
|
-
CLogger.instance.error! "[#{@name}] deployment FAILED"
|
121
|
+
KnifeESX::CLogger.instance.error! "[#{@name}] deployment FAILED"
|
121
122
|
@err.each_line do |l|
|
122
|
-
CLogger.instance.error! "[#{@name}] #{l.chomp}"
|
123
|
+
KnifeESX::CLogger.instance.error! "[#{@name}] #{l.chomp}"
|
123
124
|
end
|
124
125
|
end
|
125
126
|
return @status, @out, @err
|
@@ -280,7 +281,7 @@ class Chef
|
|
280
281
|
$stdout.sync = true
|
281
282
|
|
282
283
|
if config[:batch]
|
283
|
-
CLogger.instance.info "Running in batch mode. Extra arguments will be ignored."
|
284
|
+
KnifeESX::CLogger.instance.info "Running in batch mode. Extra arguments will be ignored."
|
284
285
|
if not config[:async]
|
285
286
|
counter = 0
|
286
287
|
script = KnifeESX::DeployScript.new(config[:batch])
|
@@ -288,17 +289,17 @@ class Chef
|
|
288
289
|
counter += 1
|
289
290
|
status, stdout, stderr = job.run
|
290
291
|
if status == 0
|
291
|
-
CLogger.instance.info 'Ok'
|
292
|
+
KnifeESX::CLogger.instance.info 'Ok'
|
292
293
|
else
|
293
|
-
CLogger.instance.error 'Failed'
|
294
|
+
KnifeESX::CLogger.instance.error 'Failed'
|
294
295
|
stderr.each_line do |l|
|
295
296
|
ui.error l
|
296
297
|
end
|
297
298
|
end
|
298
299
|
end
|
299
300
|
else
|
300
|
-
CLogger.instance.info! "Asynchronous boostrapping selected"
|
301
|
-
CLogger.instance.info! "Now do something productive while I finish my job ;)"
|
301
|
+
KnifeESX::CLogger.instance.info! "Asynchronous boostrapping selected"
|
302
|
+
KnifeESX::CLogger.instance.info! "Now do something productive while I finish my job ;)"
|
302
303
|
script = KnifeESX::DeployScript.new(config[:batch])
|
303
304
|
futures = []
|
304
305
|
script.each_job do |job|
|
data/lib/knife-esx/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-esx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: esx
|
16
|
-
requirement: &
|
16
|
+
requirement: &19203900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.3.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19203900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: terminal-table
|
27
|
-
requirement: &
|
27
|
+
requirement: &19203400 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *19203400
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: chef
|
38
|
-
requirement: &
|
38
|
+
requirement: &19202600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0.10'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *19202600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: celluloid
|
49
|
-
requirement: &
|
49
|
+
requirement: &19201620 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.9'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *19201620
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: open4
|
60
|
-
requirement: &
|
60
|
+
requirement: &19530300 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *19530300
|
69
69
|
description: ESX Support for Chef's Knife Command
|
70
70
|
email:
|
71
71
|
- rubiojr@frameos.org
|
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
111
|
rubyforge_project:
|
112
|
-
rubygems_version: 1.8.
|
112
|
+
rubygems_version: 1.8.17
|
113
113
|
signing_key:
|
114
114
|
specification_version: 3
|
115
115
|
summary: ESX Support for Chef's Knife Command
|