vagrant-vmware-esxi 2.2.0 → 2.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.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/lib/vagrant-vmware-esxi/action/boot.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/createvm.rb +28 -15
- data/lib/vagrant-vmware-esxi/action/destroy.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/esxi_password.rb +11 -12
- data/lib/vagrant-vmware-esxi/action/halt.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/package.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/read_ssh_info.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/read_state.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/resume.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/shutdown.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/snapshot_delete.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/snapshot_info.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/snapshot_list.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/snapshot_restore.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/snapshot_save.rb +1 -1
- data/lib/vagrant-vmware-esxi/action/suspend.rb +1 -1
- data/lib/vagrant-vmware-esxi/action.rb +1 -1
- data/lib/vagrant-vmware-esxi/config.rb +12 -13
- data/lib/vagrant-vmware-esxi/version.rb +1 -1
- data/vagrant-vmware-esxi.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60c2145e05970afe201403ae42692fd057e282d5
|
4
|
+
data.tar.gz: 5eb2e6c0f233ebd61e73c2208c0635b641f520b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3eb8c8b5d115abedc55d518b42f11a85eba4614b5df7d5b524e21037b4f8ac0fb95887a9ac9b62ac3974ae43d6ccfad380462f831fb6e62b2b391e834995b22c
|
7
|
+
data.tar.gz: cf88a86b99ff57ec19d70f686a2b9b529f474d18c42ac971b46d4bff99b4875783cb54eab273e2de5e6852b89e4cb506c7011f7670fa34e6d414a6a8ccc8a745
|
data/README.md
CHANGED
@@ -271,13 +271,18 @@ Known issues with vmware_esxi
|
|
271
271
|
* Vagrant NFS synced folders is not reliable on multi-homed clients (your vagrant pc/laptop/host). There is no 100% reliable way to know which IP is the correct, most reliable, most desirable, etc...
|
272
272
|
* V2.0.1 - 2.0.5 is not compatible with Windows (to support ed25519 ssh keys, net-ssh requires libsodium but it's not compatible with Windows). ed25519 support has been removed for now. It will be added back when net-ssh 5.x goes out of beta.
|
273
273
|
* Cygwin & gitbash have console issues. Ruby module io/console does not have support. https://github.com/ruby/io-console/issues/2
|
274
|
+
* Setting the hostname might fail on some boxes. Use most recent version of Vagrant for best results.
|
274
275
|
|
275
276
|
|
276
277
|
Version History
|
277
278
|
---------------
|
279
|
+
* 2.2.1 Fix, clone_from_vm not working on MAC.
|
280
|
+
Fix, enabled SetHostname.
|
281
|
+
Fix, Multimachine not working with multiple esxi hosts and different passwords.
|
282
|
+
|
278
283
|
* 2.2.0 Add support to extend boot disk size.
|
279
284
|
Fix, add many more special characters to encode in esxi passwords.
|
280
|
-
|
285
|
+
|
281
286
|
* 2.1.0 Add support for clone_from_vm.
|
282
287
|
Fix, use esxcli to get storage information.
|
283
288
|
|
@@ -35,7 +35,7 @@ module VagrantPlugins
|
|
35
35
|
message: 'Cannot boot in this state')
|
36
36
|
else
|
37
37
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
38
|
-
password:
|
38
|
+
password: config.esxi_password,
|
39
39
|
port: config.esxi_hostport,
|
40
40
|
keys: config.local_private_keys,
|
41
41
|
timeout: 20,
|
@@ -42,10 +42,7 @@ module VagrantPlugins
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# Set desired_guest_name
|
45
|
-
if
|
46
|
-
# A hostname has been set, so use it.
|
47
|
-
desired_guest_name = env[:machine].config.vm.hostname.dup
|
48
|
-
elsif config.guest_name.nil?
|
45
|
+
if env[:machine].config.vm.hostname.nil? && config.guest_name.nil?
|
49
46
|
# Nothing set, so generate our own
|
50
47
|
desired_guest_name = config.guest_name_prefix.strip
|
51
48
|
desired_guest_name << `hostname`.partition('.').first.strip
|
@@ -54,9 +51,10 @@ module VagrantPlugins
|
|
54
51
|
desired_guest_name << '-'
|
55
52
|
base = File.basename machine.env.cwd.to_s
|
56
53
|
desired_guest_name << base
|
57
|
-
|
54
|
+
elsif !env[:machine].config.vm.hostname.nil? && config.guest_name.nil?
|
55
|
+
desired_guest_name = env[:machine].config.vm.hostname.dup
|
58
56
|
else
|
59
|
-
#
|
57
|
+
# Both are set, or only guest_name. So, we'll choose guest_name.
|
60
58
|
desired_guest_name = config.guest_name.strip
|
61
59
|
end
|
62
60
|
desired_guest_name = desired_guest_name[0..252].gsub(/_/,'-').gsub(/[^0-9A-Za-z\-\.]/i, '').strip
|
@@ -77,11 +75,26 @@ module VagrantPlugins
|
|
77
75
|
raise Errors::GeneralError,
|
78
76
|
message: "Unable to create tmp dir #{tmpdir}"
|
79
77
|
end
|
78
|
+
|
79
|
+
ovf_debug = '--X:logLevel=info --X:logToConsole' if config.debug =~ %r{ovftool}i
|
80
80
|
#
|
81
81
|
# Source from Clone
|
82
|
-
clone_from_vm_path = "vi://#{config.esxi_username}:#{
|
83
|
-
ovf_cmd = "ovftool --noSSLVerify --overwrite --
|
84
|
-
|
82
|
+
clone_from_vm_path = "vi://#{config.esxi_username}:#{config.encoded_esxi_password}@#{config.esxi_hostname}/#{config.clone_from_vm}"
|
83
|
+
ovf_cmd = "ovftool --noSSLVerify --overwrite --X:useMacNaming=false "\
|
84
|
+
"--powerOffTarget --noDisks --targetType=vmx #{ovf_debug} "\
|
85
|
+
"#{clone_from_vm_path} #{tmpdir}"
|
86
|
+
if config.debug =~ %r{password}i
|
87
|
+
@logger.info("vagrant-vmware-esxi, createvm: ovf_cmd #{ovf_cmd}")
|
88
|
+
puts "ovftool command: #{ovf_cmd}"
|
89
|
+
elsif config.debug =~ %r{true}i
|
90
|
+
if config.encoded_esxi_password == ''
|
91
|
+
ovf_cmd_nopw = ovf_cmd
|
92
|
+
else
|
93
|
+
ovf_cmd_nopw = ovf_cmd.gsub(/#{config.encoded_esxi_password}/, '******')
|
94
|
+
end
|
95
|
+
puts "ovftool command: #{ovf_cmd_nopw}"
|
96
|
+
end
|
97
|
+
|
85
98
|
unless system "#{ovf_cmd}"
|
86
99
|
raise Errors::OVFToolError,
|
87
100
|
message: "Unable to access #{config.clone_from_vm}"
|
@@ -99,7 +112,7 @@ module VagrantPlugins
|
|
99
112
|
# Open the network connection
|
100
113
|
#
|
101
114
|
Net::SSH.start( config.esxi_hostname, config.esxi_username,
|
102
|
-
password:
|
115
|
+
password: config.esxi_password,
|
103
116
|
port: config.esxi_hostport,
|
104
117
|
keys: config.local_private_keys,
|
105
118
|
timeout: 20,
|
@@ -491,11 +504,11 @@ module VagrantPlugins
|
|
491
504
|
else
|
492
505
|
src_path = clone_from_vm_path
|
493
506
|
end
|
494
|
-
ovf_cmd = "ovftool --noSSLVerify #{overwrite_opts} "\
|
507
|
+
ovf_cmd = "ovftool --noSSLVerify #{overwrite_opts} #{ovf_debug} "\
|
495
508
|
"-dm=#{guest_disk_type} #{local_laxoption} "\
|
496
509
|
"-ds=\"#{@guestvm_dsname}\" --name=\"#{desired_guest_name}\" "\
|
497
510
|
"\"#{src_path}\" vi://#{config.esxi_username}:"\
|
498
|
-
"#{
|
511
|
+
"#{config.encoded_esxi_password}@#{config.esxi_hostname}"\
|
499
512
|
"#{esxi_resource_pool}"
|
500
513
|
|
501
514
|
#
|
@@ -505,10 +518,10 @@ module VagrantPlugins
|
|
505
518
|
@logger.info("vagrant-vmware-esxi, createvm: ovf_cmd #{ovf_cmd}")
|
506
519
|
puts "ovftool command: #{ovf_cmd}"
|
507
520
|
elsif config.debug =~ %r{true}i
|
508
|
-
if
|
521
|
+
if config.encoded_esxi_password == ''
|
509
522
|
ovf_cmd_nopw = ovf_cmd
|
510
523
|
else
|
511
|
-
ovf_cmd_nopw = ovf_cmd.gsub(/#{
|
524
|
+
ovf_cmd_nopw = ovf_cmd.gsub(/#{config.encoded_esxi_password}/, '******')
|
512
525
|
end
|
513
526
|
puts "ovftool command: #{ovf_cmd_nopw}"
|
514
527
|
end
|
@@ -530,7 +543,7 @@ module VagrantPlugins
|
|
530
543
|
# to vmx file.
|
531
544
|
#
|
532
545
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
533
|
-
password:
|
546
|
+
password: config.esxi_password,
|
534
547
|
port: config.esxi_hostport,
|
535
548
|
keys: config.local_private_keys,
|
536
549
|
timeout: 20,
|
@@ -34,7 +34,7 @@ module VagrantPlugins
|
|
34
34
|
message: 'Guest VM should have been powered off...'
|
35
35
|
else
|
36
36
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
37
|
-
password:
|
37
|
+
password: config.esxi_password,
|
38
38
|
port: config.esxi_hostport,
|
39
39
|
keys: config.local_private_keys,
|
40
40
|
timeout: 20,
|
@@ -25,16 +25,16 @@ module VagrantPlugins
|
|
25
25
|
config = env[:machine].provider_config
|
26
26
|
|
27
27
|
#
|
28
|
-
# Set global variable
|
28
|
+
# Set global variable config.esxi_password
|
29
29
|
#
|
30
|
-
if
|
30
|
+
if config.encoded_esxi_password.nil?
|
31
31
|
if config.esxi_password =~ %r{^prompt:}i
|
32
32
|
#
|
33
33
|
# Prompt for password
|
34
34
|
#
|
35
35
|
begin
|
36
36
|
print "#{config.esxi_username}@#{config.esxi_hostname} password:"
|
37
|
-
|
37
|
+
config.esxi_password = STDIN.noecho(&:gets).chomp
|
38
38
|
puts ''
|
39
39
|
rescue
|
40
40
|
begin
|
@@ -46,7 +46,7 @@ module VagrantPlugins
|
|
46
46
|
puts 'is a problem for you, ctrl-C / [ENTER] to exit and fix your stdin.'
|
47
47
|
puts ''
|
48
48
|
print "#{config.esxi_username}@#{config.esxi_hostname} password:"
|
49
|
-
|
49
|
+
config.esxi_password = $stdin.readline().chomp
|
50
50
|
puts ''
|
51
51
|
rescue
|
52
52
|
raise Errors::ESXiError,
|
@@ -63,7 +63,7 @@ module VagrantPlugins
|
|
63
63
|
end
|
64
64
|
begin
|
65
65
|
stdin_pw = ENV[esxi_password_env]
|
66
|
-
|
66
|
+
config.esxi_password = stdin_pw.chomp
|
67
67
|
rescue
|
68
68
|
raise Errors::ESXiError,
|
69
69
|
message: "Unable to read environment variable: #{esxi_password_env}"
|
@@ -84,7 +84,7 @@ module VagrantPlugins
|
|
84
84
|
fh = File.open(File.expand_path(esxi_password_file))
|
85
85
|
file_pw = fh.readline
|
86
86
|
fh.close
|
87
|
-
|
87
|
+
config.esxi_password = file_pw.chomp
|
88
88
|
else
|
89
89
|
raise Errors::ESXiError, message: "Unable to open #{esxi_password_file}"
|
90
90
|
end
|
@@ -95,20 +95,19 @@ module VagrantPlugins
|
|
95
95
|
#
|
96
96
|
# use ssh keys
|
97
97
|
#
|
98
|
-
$esxi_password = ''
|
99
98
|
esxi_password_key = config.esxi_password.gsub(/key:/i, '').chomp
|
99
|
+
config.esxi_password = ''
|
100
100
|
unless esxi_password_key.empty?
|
101
101
|
config.local_private_keys = esxi_password_key
|
102
102
|
end
|
103
103
|
else
|
104
104
|
# Use plain text password from config
|
105
|
-
$esxi_password = config.esxi_password
|
106
105
|
end
|
107
106
|
|
108
107
|
#
|
109
108
|
# Encode special characters in PW
|
110
109
|
#
|
111
|
-
|
110
|
+
config.encoded_esxi_password = config.esxi_password.gsub('%', '%25').\
|
112
111
|
gsub(' ', '%20').\
|
113
112
|
gsub('!', '%21').\
|
114
113
|
gsub('"', '%22').\
|
@@ -140,7 +139,7 @@ module VagrantPlugins
|
|
140
139
|
gsub('{', '%7b').\
|
141
140
|
gsub('|', '%7c').\
|
142
141
|
gsub('}', '%7d').\
|
143
|
-
gsub('~', '%7e')
|
142
|
+
gsub('~', '%7e')
|
144
143
|
|
145
144
|
@logger.info('vagrant-vmware-esxi, connect_esxi: local_private_keys: '\
|
146
145
|
"#{config.local_private_keys}")
|
@@ -151,9 +150,9 @@ module VagrantPlugins
|
|
151
150
|
begin
|
152
151
|
puts "RUBY_PLATFORM: #{RUBY_PLATFORM}" if config.debug =~ %r{true}i
|
153
152
|
puts "Testing esxi connectivity" if config.debug =~ %r{ip}i
|
154
|
-
puts "esxi_ssh_keys: #{config.local_private_keys}" if config.debug =~ %r{
|
153
|
+
puts "esxi_ssh_keys: #{config.local_private_keys}" if config.debug =~ %r{password}i
|
155
154
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
156
|
-
password:
|
155
|
+
password: config.esxi_password,
|
157
156
|
port: config.esxi_hostport,
|
158
157
|
keys: config.local_private_keys,
|
159
158
|
timeout: 20,
|
@@ -29,7 +29,7 @@ module VagrantPlugins
|
|
29
29
|
env[:ui].info I18n.t('vagrant_vmware_esxi.already_destroyed')
|
30
30
|
else
|
31
31
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
32
|
-
password:
|
32
|
+
password: config.esxi_password,
|
33
33
|
port: config.esxi_hostport,
|
34
34
|
keys: config.local_private_keys,
|
35
35
|
timeout: 20,
|
@@ -94,7 +94,7 @@ module VagrantPlugins
|
|
94
94
|
|
95
95
|
ovf_cmd = "ovftool --noSSLVerify -tt=VMX --name=\"#{boxname}\" "\
|
96
96
|
"#{overwrite_opts} vi://#{config.esxi_username}:"\
|
97
|
-
"#{
|
97
|
+
"#{config.encoded_esxi_password}@#{config.esxi_hostname}"\
|
98
98
|
"?moref=vim.VirtualMachine:#{machine.id} #{tmpdir}"
|
99
99
|
|
100
100
|
unless system "#{ovf_cmd}"
|
@@ -42,7 +42,7 @@ module VagrantPlugins
|
|
42
42
|
|
43
43
|
# Figure out vm_ipaddress
|
44
44
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
45
|
-
password:
|
45
|
+
password: config.esxi_password,
|
46
46
|
port: config.esxi_hostport,
|
47
47
|
keys: config.local_private_keys,
|
48
48
|
timeout: 20,
|
@@ -77,7 +77,7 @@ module VagrantPlugins
|
|
77
77
|
@logger.info("vagrant-vmware-esxi, read_state: current state: #{env[:machine_state]}")
|
78
78
|
|
79
79
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
80
|
-
password:
|
80
|
+
password: config.esxi_password,
|
81
81
|
port: config.esxi_hostport,
|
82
82
|
keys: config.local_private_keys,
|
83
83
|
timeout: 20,
|
@@ -31,7 +31,7 @@ module VagrantPlugins
|
|
31
31
|
env[:ui].info I18n.t('vagrant_vmware_esxi.vagrant_vmware_esxi_message',
|
32
32
|
message: "Starting graceful shutdown...")
|
33
33
|
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
34
|
-
password:
|
34
|
+
password: config.esxi_password,
|
35
35
|
port: config.esxi_hostport,
|
36
36
|
keys: config.local_private_keys,
|
37
37
|
timeout: 20,
|
@@ -8,6 +8,7 @@ module VagrantPlugins
|
|
8
8
|
attr_accessor :esxi_hostport
|
9
9
|
attr_accessor :esxi_username
|
10
10
|
attr_accessor :esxi_password
|
11
|
+
attr_accessor :encoded_esxi_password
|
11
12
|
attr_accessor :esxi_disk_store
|
12
13
|
attr_accessor :esxi_virtual_network
|
13
14
|
attr_accessor :esxi_resource_pool
|
@@ -31,14 +32,12 @@ module VagrantPlugins
|
|
31
32
|
attr_accessor :local_allow_overwrite
|
32
33
|
attr_accessor :local_lax
|
33
34
|
attr_accessor :local_use_ip_cache
|
34
|
-
attr_accessor :local_private_keys_path
|
35
35
|
attr_accessor :debug
|
36
36
|
attr_accessor :supported_guest_virtualhw_versions
|
37
37
|
attr_accessor :supported_guest_disk_types
|
38
38
|
attr_accessor :supported_guest_nic_types
|
39
39
|
attr_accessor :supported_guest_guestos
|
40
40
|
attr_accessor :saved_ipaddress
|
41
|
-
attr_accessor :saved_ipaddress_count
|
42
41
|
|
43
42
|
#
|
44
43
|
# legacy (1.x) config entries
|
@@ -65,6 +64,7 @@ module VagrantPlugins
|
|
65
64
|
@esxi_hostport = 22
|
66
65
|
@esxi_username = 'root'
|
67
66
|
@esxi_password = nil
|
67
|
+
@encoded_esxi_password = nil
|
68
68
|
@esxi_disk_store = nil
|
69
69
|
@esxi_virtual_network = nil
|
70
70
|
@esxi_resource_pool = nil
|
@@ -90,15 +90,6 @@ module VagrantPlugins
|
|
90
90
|
@local_use_ip_cache = 'True'
|
91
91
|
@debug = 'False'
|
92
92
|
@saved_ipaddress = nil
|
93
|
-
@saved_ipaddress_count = 0
|
94
|
-
@system_private_keys = [
|
95
|
-
'~/.ssh/id_rsa',
|
96
|
-
'~/.ssh/id_ecdsa',
|
97
|
-
'~/.ssh/id_dsa'
|
98
|
-
]
|
99
|
-
#'~/.ssh/id_ed25519',
|
100
|
-
# Removed support for ed25519 because libsodium is not compatible with windows.
|
101
|
-
# Should be added back when net-ssh 5.0 is out of beta.
|
102
93
|
@supported_guest_virtualhw_versions = [
|
103
94
|
4,7,8,9,10,11,12,13
|
104
95
|
]
|
@@ -365,6 +356,7 @@ module VagrantPlugins
|
|
365
356
|
end
|
366
357
|
|
367
358
|
@guest_username = nil if @guest_username == UNSET_VALUE
|
359
|
+
@encoded_esxi_password = nil
|
368
360
|
|
369
361
|
@guest_boot_disk_size = @guest_boot_disk_size.to_i if @guest_boot_disk_size.is_a? String
|
370
362
|
@guest_boot_disk_size = nil if @guest_boot_disk_size == 0
|
@@ -375,8 +367,14 @@ module VagrantPlugins
|
|
375
367
|
|
376
368
|
@esxi_virtual_network = ['--NotSet--'] if @esxi_virtual_network.nil?
|
377
369
|
|
378
|
-
@local_private_keys =
|
379
|
-
|
370
|
+
@local_private_keys = [
|
371
|
+
'~/.ssh/id_rsa',
|
372
|
+
'~/.ssh/id_ecdsa',
|
373
|
+
'~/.ssh/id_dsa'
|
374
|
+
]
|
375
|
+
#'~/.ssh/id_ed25519',
|
376
|
+
# Removed support for ed25519 because libsodium is not compatible with windows.
|
377
|
+
# Should be added back when net-ssh 5.0 is out of beta.
|
380
378
|
|
381
379
|
if @local_lax =~ /true/i
|
382
380
|
@local_lax = 'True'
|
@@ -400,6 +398,7 @@ module VagrantPlugins
|
|
400
398
|
else
|
401
399
|
@guest_snapshot_quiesced = ''
|
402
400
|
end
|
401
|
+
@saved_ipaddress = nil
|
403
402
|
|
404
403
|
end
|
405
404
|
end
|
data/vagrant-vmware-esxi.gemspec
CHANGED
@@ -3,7 +3,7 @@ require File.expand_path('../lib/vagrant-vmware-esxi/version', __FILE__)
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'vagrant-vmware-esxi'
|
5
5
|
s.version = VagrantPlugins::ESXi::VERSION
|
6
|
-
s.date = '2018-04-
|
6
|
+
s.date = '2018-04-23'
|
7
7
|
s.summary = 'Vagrant ESXi provider plugin'
|
8
8
|
s.description = 'A Vagrant plugin that adds a VMware ESXi provider support'
|
9
9
|
s.authors = ['Jonathan Senkerik']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vmware-esxi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan Senkerik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|