vagrant-vmware-esxi 2.0.2 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -2
- data/README.md +16 -7
- data/example_box/Vagrantfile +7 -0
- data/lib/vagrant-vmware-esxi/action.rb +0 -1
- data/lib/vagrant-vmware-esxi/action/createvm.rb +6 -4
- data/lib/vagrant-vmware-esxi/action/esxi_password.rb +60 -59
- data/lib/vagrant-vmware-esxi/action/read_ssh_info.rb +55 -40
- data/lib/vagrant-vmware-esxi/action/read_state.rb +38 -5
- data/lib/vagrant-vmware-esxi/config.rb +12 -0
- data/lib/vagrant-vmware-esxi/version.rb +1 -1
- data/vagrant-vmware-esxi.gemspec +8 -4
- metadata +19 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b27af15025065ae2b975b2dace40a65ad09aadab
|
4
|
+
data.tar.gz: 8d7b51d2ee434aca4c1acb52496907fcf30c9a93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ffacc56f89bcdcba403c52a151bfa92c5ba3dcbfeaf69abc6a0e5ebb2db140d1b1bdd3a16bd5f3792625b05d174bf7705f138a986dd20e3ef6f6f8acf90df23
|
7
|
+
data.tar.gz: 02f91eb5356872ea1d301e1e027940f1a960c3ec136d6cc1e406349eab36e2f65a13998725e533e0e119652f4f8d92de8756c6b0fdcf7576266bea8f6a0d77a9
|
data/Gemfile
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in vagrant-exsi.gemspec
|
4
|
-
gemspec
|
4
|
+
#gemspec
|
5
5
|
|
6
6
|
group :development do
|
7
|
-
#gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
|
8
7
|
gem 'vagrant', git: 'https://github.com/hashicorp/vagrant.git'
|
9
8
|
#gem 'vagrant-vmware-esxi', path: '.'
|
10
9
|
end
|
data/README.md
CHANGED
@@ -27,9 +27,10 @@ Features and Compatibility
|
|
27
27
|
* package your vm's into boxes.
|
28
28
|
* Create additional network interfaces, set nic type, MAC addresses, static IPs.
|
29
29
|
* Use Vagrants private_network, public_network options to set a static IP addresses on additional network interfaces. (not the primary interface)
|
30
|
-
* Disks provisioned using thin, thick or eagerzeroedthick.
|
30
|
+
* Disks can be provisioned using thin, thick or eagerzeroedthick.
|
31
31
|
* Create additional guest storage (upto 14 virtual disks).
|
32
|
-
* Specify GuestOS types, virtual HW version
|
32
|
+
* Specify GuestOS types, virtual HW version.
|
33
|
+
* Any custom vmx settings can be added or modified.
|
33
34
|
|
34
35
|
Requirements
|
35
36
|
------------
|
@@ -173,7 +174,7 @@ Vagrant.configure('2') do |config|
|
|
173
174
|
#esxi.guest_disk_type = 'thick'
|
174
175
|
|
175
176
|
# OPTIONAL. Create additional storage for guests.
|
176
|
-
# You can specify an array of upto 14 virtual disk sizes (in GB) that you
|
177
|
+
# You can specify an array of upto 14 virtual disk sizes (in GB) that you
|
177
178
|
# would like the provider to create once the guest has been created.
|
178
179
|
#esxi.guest_storage = [10,20]
|
179
180
|
|
@@ -195,13 +196,16 @@ Vagrant.configure('2') do |config|
|
|
195
196
|
# OPTIONAL. local_lax
|
196
197
|
#esxi.local_lax = 'true'
|
197
198
|
|
199
|
+
# OPTIONAL. Guest IP Caching
|
200
|
+
#esxi.local_use_ip_cache = 'True'
|
201
|
+
|
198
202
|
# DANGEROUS! Allow Overwrite
|
199
203
|
# If unspecified, the default is to produce an error if overwriting
|
200
204
|
# vm's and packages.
|
201
205
|
#esxi.local_allow_overwrite = 'True'
|
202
206
|
|
203
207
|
# Plugin debug output.
|
204
|
-
#
|
208
|
+
# Please send any bug reports with debug this output...
|
205
209
|
#esxi.debug = 'true'
|
206
210
|
|
207
211
|
end
|
@@ -250,14 +254,19 @@ Basic usage
|
|
250
254
|
Known issues with vmware_esxi
|
251
255
|
-----------------------------
|
252
256
|
* The boxes must have open-vm-tools or vmware-tools installed to properly transition to the 'running' state.
|
253
|
-
* Invalid settings (bad IP address, netmask, MAC address, guest_custom_vmx_settings) could cause 'vagrant up' to fail. Review
|
254
|
-
* Cleanup doesn't always destroy a VM that has been partially built. Use the local_allow_overwrite = 'True' option if you need to force a rebuild, or delete the vm using the VSphere client.
|
257
|
+
* Invalid settings (bad IP address, netmask, MAC address, guest_custom_vmx_settings) could cause 'vagrant up' to fail. Review vSphere console and/or ESXi logs to help debug why it failed.
|
258
|
+
* Cleanup doesn't always destroy a VM that has been partially built. Use the local_allow_overwrite = 'True' option if you need to force a rebuild, or you can delete the vm using the VSphere client.
|
255
259
|
* ovftool installer for windows doesn't put ovftool.exe in your path. You can manually set your path, or install ovftool in the \HashiCorp\Vagrant\bin directory.
|
256
|
-
* In general I find NFS synced folders a little 'flaky'...
|
260
|
+
* In general I find the vagrant NFS synced folders a little 'flaky'...
|
257
261
|
|
258
262
|
|
259
263
|
Version History
|
260
264
|
---------------
|
265
|
+
* 2.0.5 Performance enhancement. Guest IP caching
|
266
|
+
Performance enhancement. Optimize esxi connectivity checks.
|
267
|
+
Performance enhancement & bugfix. Get local IP address for NFS syncd folders.
|
268
|
+
Fix, unable to get VMID if getallvms command produces any errors (for other vms).
|
269
|
+
|
261
270
|
* 2.0.2 Add support to add additional storage to guest vms.
|
262
271
|
Fix, encode (space) in esxi passwords.
|
263
272
|
|
data/example_box/Vagrantfile
CHANGED
@@ -216,6 +216,13 @@ Vagrant.configure('2') do |config|
|
|
216
216
|
# to convert the errors to warning. (then the import could succeed)
|
217
217
|
#esxi.local_lax = 'true'
|
218
218
|
|
219
|
+
# OPTIONAL. Guest IP Caching
|
220
|
+
# If unspecified, guest IP caching will be enabled. This will result in
|
221
|
+
# faster vagrant command executution. However, vagrant could get incorrect
|
222
|
+
# information if an IP changes on the guest. Set this 'False' to disable
|
223
|
+
# IP caching.
|
224
|
+
#esxi.local_use_ip_cache = 'False'
|
225
|
+
|
219
226
|
# DANGEROUS! Allow Overwrite
|
220
227
|
# If unspecified, the default is to produce an error if overwriting
|
221
228
|
# vm's and packages.
|
@@ -49,6 +49,7 @@ module VagrantPlugins
|
|
49
49
|
# A guest_name has been set, so use it.
|
50
50
|
desired_guest_name = config.guest_name.strip
|
51
51
|
end
|
52
|
+
desired_guest_name = desired_guest_name[0..252].gsub(/_/,'-').gsub(/[^0-9A-Za-z\-\.]/i, '').strip
|
52
53
|
@logger.info("vagrant-vmware-esxi, createvm: config.guest_name: #{config.guest_name}")
|
53
54
|
|
54
55
|
#
|
@@ -514,10 +515,11 @@ module VagrantPlugins
|
|
514
515
|
non_interactive: true
|
515
516
|
) do |ssh|
|
516
517
|
r = ssh.exec!(
|
517
|
-
'vim-cmd vmsvc/getallvms |'\
|
518
|
-
"grep \" #{desired_guest_name} \"|
|
518
|
+
'vim-cmd vmsvc/getallvms 2>/dev/null | sort -n |'\
|
519
|
+
"grep \"[0-9] * #{desired_guest_name} .*#{desired_guest_name}\"|"\
|
520
|
+
"awk '{print $1}'|tail -1")
|
519
521
|
vmid = r
|
520
|
-
if (vmid == '') || (r.exitstatus != 0)
|
522
|
+
if (vmid == '') || (vmid == '0') || (r.exitstatus != 0)
|
521
523
|
raise Errors::ESXiError,
|
522
524
|
message: "Unable to register #{desired_guest_name}"
|
523
525
|
end
|
@@ -578,7 +580,7 @@ module VagrantPlugins
|
|
578
580
|
puts "Avail slot: #{slot}" if config.debug =~ %r{true}i
|
579
581
|
guest_disk_type = 'zeroedthick' if guest_disk_type == 'thick'
|
580
582
|
|
581
|
-
cmd = "/bin/vmkfstools -c #{store_size}G -d #{guest_disk_type} #{esxi_guest_dir}/disk_#{index}.vmdk"
|
583
|
+
cmd = "/bin/vmkfstools -c #{store_size}G -d #{guest_disk_type} \"#{esxi_guest_dir}/disk_#{index}.vmdk\""
|
582
584
|
puts "cmd: #{cmd}" if config.debug =~ %r{true}i
|
583
585
|
r = ssh.exec!(cmd)
|
584
586
|
if r.exitstatus != 0
|
@@ -93,75 +93,76 @@ module VagrantPlugins
|
|
93
93
|
# Use plain text password from config
|
94
94
|
$esxi_password = config.esxi_password
|
95
95
|
end
|
96
|
-
end
|
97
96
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
97
|
+
#
|
98
|
+
# Encode special characters in PW
|
99
|
+
#
|
100
|
+
$encoded_esxi_password = $esxi_password.gsub('%', '%25').gsub(\
|
101
|
+
'<', '%3c').gsub('>', '%3e').gsub(\
|
102
|
+
'[', '%5b').gsub(']', '%5d').gsub(\
|
103
|
+
'(', '%28').gsub(')', '%29').gsub(\
|
104
|
+
'@', '%40').gsub('#', '%23').gsub(\
|
105
|
+
'&', '%26').gsub(':', '%3a').gsub(\
|
106
|
+
'/', '%2f').gsub('\\','%5c').gsub(\
|
107
|
+
'"', '%22').gsub('\'','%27').gsub(\
|
108
|
+
'*', '%2a').gsub('?', '%3f').gsub(\
|
109
|
+
'$', '%24').gsub(' ', '%20')
|
111
110
|
|
112
|
-
|
113
|
-
|
111
|
+
@logger.info('vagrant-vmware-esxi, connect_esxi: local_private_keys: '\
|
112
|
+
"#{config.local_private_keys}")
|
114
113
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
114
|
+
#
|
115
|
+
# Test ESXi host connectivity
|
116
|
+
#
|
117
|
+
begin
|
118
|
+
puts "Testing esxi connectivity" if config.debug =~ %r{ip}i
|
119
|
+
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
120
|
+
password: $esxi_password,
|
121
|
+
port: config.esxi_hostport,
|
122
|
+
keys: config.local_private_keys,
|
123
|
+
timeout: 20,
|
124
|
+
number_of_password_prompts: 0,
|
125
|
+
non_interactive: true
|
126
|
+
) do |ssh|
|
127
127
|
|
128
|
-
|
129
|
-
|
128
|
+
esxi_version = ssh.exec!('vmware -v')
|
129
|
+
ssh.close
|
130
130
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
131
|
+
@logger = Log4r::Logger.new('vagrant_vmware_esxi::action::set_esxi_password')
|
132
|
+
if (config.debug =~ %r{true}i) && $showVersionFlag.nil?
|
133
|
+
$showVersionFlag = true
|
134
|
+
env[:ui].info I18n.t('vagrant_vmware_esxi.vagrant_vmware_esxi_message',
|
135
|
+
message: "ESXi version : #{esxi_version}")
|
136
|
+
end
|
137
|
+
if esxi_version !~ %r{^vmware esxi}i
|
138
|
+
@logger.info('vagrant-vmware-esxi, set_esxi_password: '\
|
139
|
+
"ESXi version: #{esxi_version}")
|
140
|
+
raise Errors::ESXiError,
|
141
|
+
message: 'Unable to connect to ESXi host!'
|
142
|
+
end
|
136
143
|
end
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
144
|
+
rescue
|
145
|
+
if config.esxi_password =~ %r{^prompt:}i
|
146
|
+
access_error_message = 'Prompt for password'
|
147
|
+
elsif config.esxi_password =~ %r{^env:}i
|
148
|
+
access_error_message = "env:#{esxi_password_env}"
|
149
|
+
elsif config.esxi_password =~ %r{^file:}i
|
150
|
+
access_error_message = "file:#{esxi_password_file}"
|
151
|
+
elsif config.esxi_password =~ %r{^key:}i
|
152
|
+
access_error_message = "key:#{config.local_private_keys}"
|
153
|
+
else
|
154
|
+
access_error_message = 'password in Vagrantfile'
|
142
155
|
end
|
143
|
-
end
|
144
|
-
rescue
|
145
|
-
if config.esxi_password =~ %r{^prompt:}i
|
146
|
-
access_error_message = 'Prompt for password'
|
147
|
-
elsif config.esxi_password =~ %r{^env:}i
|
148
|
-
access_error_message = "env:#{esxi_password_env}"
|
149
|
-
elsif config.esxi_password =~ %r{^file:}i
|
150
|
-
access_error_message = "file:#{esxi_password_file}"
|
151
|
-
elsif config.esxi_password =~ %r{^key:}i
|
152
|
-
access_error_message = "key:#{config.local_private_keys}"
|
153
|
-
else
|
154
|
-
access_error_message = 'password in Vagrantfile'
|
155
|
-
end
|
156
156
|
|
157
|
-
|
158
|
-
|
157
|
+
env[:ui].info I18n.t('vagrant_vmware_esxi.vagrant_vmware_esxi_message',
|
158
|
+
message: "ESXi host access : #{access_error_message}")
|
159
159
|
|
160
|
-
|
161
|
-
|
160
|
+
@logger.info('vagrant-vmware-esxi, set_esxi_password: '\
|
161
|
+
"ESXi host access : #{access_error_message}")
|
162
162
|
|
163
|
-
|
164
|
-
|
163
|
+
raise Errors::ESXiError,
|
164
|
+
message: 'Unable to connect to ESXi host!'
|
165
|
+
end
|
165
166
|
end
|
166
167
|
end
|
167
168
|
end
|
@@ -25,9 +25,12 @@ module VagrantPlugins
|
|
25
25
|
|
26
26
|
return nil if machine.id.nil?
|
27
27
|
|
28
|
+
# most of the time, state will be nil. But that's OK, we need to
|
29
|
+
# continue to read_ssh_info...
|
28
30
|
if (env[:machine_state].to_s == 'not_created' ||
|
29
31
|
env[:machine_state].to_s == 'powered_off' ||
|
30
32
|
env[:machine_state].to_s == 'suspended')
|
33
|
+
config.saved_ipaddress = nil
|
31
34
|
return nil
|
32
35
|
end
|
33
36
|
|
@@ -35,49 +38,61 @@ module VagrantPlugins
|
|
35
38
|
@logger.info('vagrant-vmware-esxi, read_ssh_info: current state:'\
|
36
39
|
" #{env[:machine_state]}")
|
37
40
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
ssh_execute_cmd = "vim-cmd vmsvc/get.guest #{machine.id} 2>/dev/null |"
|
62
|
-
ssh_execute_cmd << 'grep "^ ipAddress = "|head -1|'
|
63
|
-
ssh_execute_cmd << 'grep -oE "((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])"'
|
64
|
-
r2 = ssh.exec!(ssh_execute_cmd)
|
65
|
-
|
66
|
-
ssh_execute_cmd = "vim-cmd vmsvc/get.summary #{machine.id} 2>/dev/null |"
|
67
|
-
ssh_execute_cmd << 'grep "uptimeSeconds ="|sed "s/^.*= //g"|sed s/,//g'
|
68
|
-
uptime = ssh.exec!(ssh_execute_cmd)
|
69
|
-
|
70
|
-
if ( r.length == 0 && uptime.to_i > 120)
|
71
|
-
ipaddress = r2.strip
|
72
|
-
else
|
41
|
+
if config.saved_ipaddress.nil? or config.local_use_ip_cache == 'False'
|
42
|
+
puts "Determine guest IP address." if config.debug =~ %r{ip}i
|
43
|
+
|
44
|
+
# Figure out vm_ipaddress
|
45
|
+
Net::SSH.start(config.esxi_hostname, config.esxi_username,
|
46
|
+
password: $esxi_password,
|
47
|
+
port: config.esxi_hostport,
|
48
|
+
keys: config.local_private_keys,
|
49
|
+
timeout: 20,
|
50
|
+
number_of_password_prompts: 0,
|
51
|
+
non_interactive: true
|
52
|
+
) do |ssh|
|
53
|
+
|
54
|
+
@logger = Log4r::Logger.new('vagrant_vmware_esxi::action::'\
|
55
|
+
'read_ssh_info-net_ssh')
|
56
|
+
|
57
|
+
# ugly, but it works...
|
58
|
+
# Try to get first interface. This is the prefered method
|
59
|
+
# when you have multiple network interfaces
|
60
|
+
ssh_execute_cmd = "vim-cmd vmsvc/get.guest #{machine.id} 2>/dev/null |"
|
61
|
+
ssh_execute_cmd << 'grep -A 5 "deviceConfigId = 4000" |tail -1|'
|
62
|
+
ssh_execute_cmd << 'grep -oE "((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])"'
|
63
|
+
r = ssh.exec!(ssh_execute_cmd)
|
73
64
|
ipaddress = r.strip
|
74
|
-
end
|
75
65
|
|
76
|
-
|
77
|
-
|
66
|
+
# Some OS's don't like above method, so use IP from summary (after 120 seconds uptime)
|
67
|
+
r2 = ''
|
68
|
+
if r.length == 0
|
69
|
+
ssh_execute_cmd = "vim-cmd vmsvc/get.summary #{machine.id} 2>/dev/null |"
|
70
|
+
ssh_execute_cmd << 'grep "uptimeSeconds ="|sed "s/^.*= //g"|sed s/,//g'
|
71
|
+
uptime = ssh.exec!(ssh_execute_cmd)
|
72
|
+
if uptime.to_i > 120
|
73
|
+
puts "Get IP alt method, uptime: #{uptime.to_i}" if config.debug =~ %r{ip}i
|
74
|
+
ssh_execute_cmd = "vim-cmd vmsvc/get.guest #{machine.id} 2>/dev/null |"
|
75
|
+
ssh_execute_cmd << 'grep "^ ipAddress = "|head -1|'
|
76
|
+
ssh_execute_cmd << 'grep -oE "((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])"'
|
77
|
+
r2 = ssh.exec!(ssh_execute_cmd)
|
78
|
+
ipaddress = r2.strip
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
puts "ip1 (pri):#{r.strip} ip2 (alt):#{r2.strip}" if config.debug =~ %r{ip}i
|
83
|
+
|
84
|
+
return nil if (ipaddress == '')
|
85
|
+
|
86
|
+
config.saved_ipaddress = ipaddress
|
87
|
+
|
88
|
+
return {
|
89
|
+
host: ipaddress,
|
90
|
+
port: 22
|
91
|
+
}
|
78
92
|
end
|
79
|
-
|
80
|
-
|
93
|
+
else
|
94
|
+
puts "Using cached guest IP address" if config.debug =~ %r{ip}i
|
95
|
+
ipaddress = config.saved_ipaddress
|
81
96
|
|
82
97
|
return {
|
83
98
|
host: ipaddress,
|
@@ -17,13 +17,48 @@ module VagrantPlugins
|
|
17
17
|
env[:machine_state] = read_state(env)
|
18
18
|
|
19
19
|
# Do NFS stuff
|
20
|
-
if env[:machine_state].to_s.include? "running"
|
20
|
+
if (env[:machine_state].to_s.include? "running") && ($nfs_host_ip.nil?)
|
21
21
|
ssh_info = env[:machine].ssh_info
|
22
22
|
if defined?(ssh_info[:host])
|
23
23
|
env[:nfs_machine_ip] = [ssh_info[:host]]
|
24
|
-
|
24
|
+
$nfs_machine_ip = [ssh_info[:host]].dup
|
25
25
|
env[:nfs_valid_ids] = [env[:machine].id]
|
26
|
+
$nfs_valid_ids = [env[:machine].id].dup
|
27
|
+
|
28
|
+
begin
|
29
|
+
puts "Get local IP address for NFS. (pri)" if env[:machine].provider_config.debug =~ %r{ip}i
|
30
|
+
# The Standard way to get your IP. Get your hostname, resolv it.
|
31
|
+
env[:nfs_host_ip] = Socket::getaddrinfo(Socket.gethostname,"echo",Socket::AF_INET)[0][3]
|
32
|
+
rescue
|
33
|
+
puts "Get local IP address for NFS. (alt)" if env[:machine].provider_config.debug =~ %r{ip}i
|
34
|
+
# Alt method. Get list of ip_addresses on system and use the first.
|
35
|
+
Socket.ip_address_list.each do |ip|
|
36
|
+
if (ip.ip_address =~ /^(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3})$/) && (ip.ip_address !~ /^127.0.0/)
|
37
|
+
env[:nfs_host_ip] = ip.ip_address
|
38
|
+
break
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
$nfs_host_ip = env[:nfs_host_ip].dup
|
44
|
+
if env[:nfs_host_ip].nil?
|
45
|
+
# Something bad happened above. Give up on NFS.
|
46
|
+
env[:nfs_machine_ip] = nil
|
47
|
+
env[:nfs_host_ip] = nil
|
48
|
+
env[:nfs_valid_ids] = nil
|
49
|
+
# Give an error, but continue..
|
50
|
+
env[:ui].info I18n.t('vagrant_vmware_esxi.vagrant_vmware_esxi_message',
|
51
|
+
message: 'Configure NFS : ERROR, Unable to configure NFS on this machine.')
|
52
|
+
end
|
53
|
+
if (env[:machine].provider_config.debug =~ %r{ip}i) && !env[:nfs_host_ip].nil?
|
54
|
+
puts "nfs_host_ip: #{env[:nfs_host_ip]}"
|
55
|
+
end
|
26
56
|
end
|
57
|
+
else
|
58
|
+
# Use Cached entries
|
59
|
+
env[:nfs_machine_ip] = $nfs_machine_ip
|
60
|
+
env[:nfs_host_ip] = $nfs_host_ip
|
61
|
+
env[:nfs_valid_ids] = $nfs_valid_ids
|
27
62
|
end
|
28
63
|
|
29
64
|
@app.call(env)
|
@@ -50,9 +85,7 @@ module VagrantPlugins
|
|
50
85
|
non_interactive: true
|
51
86
|
) do |ssh|
|
52
87
|
|
53
|
-
r = ssh.exec!(
|
54
|
-
"vim-cmd vmsvc/getallvms|grep -q \"^#{machine.id} \" && "\
|
55
|
-
"vim-cmd vmsvc/power.getstate #{machine.id} || return 254")
|
88
|
+
r = ssh.exec!("vim-cmd vmsvc/power.getstate #{machine.id} || return 254")
|
56
89
|
power_status = r
|
57
90
|
|
58
91
|
return :not_created if r.exitstatus == 254
|
@@ -28,12 +28,15 @@ module VagrantPlugins
|
|
28
28
|
attr_accessor :local_private_keys
|
29
29
|
attr_accessor :local_allow_overwrite
|
30
30
|
attr_accessor :local_lax
|
31
|
+
attr_accessor :local_use_ip_cache
|
31
32
|
attr_accessor :local_private_keys_path
|
32
33
|
attr_accessor :debug
|
33
34
|
attr_accessor :supported_guest_virtualhw_versions
|
34
35
|
attr_accessor :supported_guest_disk_types
|
35
36
|
attr_accessor :supported_guest_nic_types
|
36
37
|
attr_accessor :supported_guest_guestos
|
38
|
+
attr_accessor :saved_ipaddress
|
39
|
+
attr_accessor :saved_ipaddress_count
|
37
40
|
|
38
41
|
#
|
39
42
|
# legacy (1.x) config entries
|
@@ -80,7 +83,10 @@ module VagrantPlugins
|
|
80
83
|
@local_private_keys = nil
|
81
84
|
@local_allow_overwrite = 'False'
|
82
85
|
@local_lax = 'False'
|
86
|
+
@local_use_ip_cache = 'True'
|
83
87
|
@debug = 'False'
|
88
|
+
@saved_ipaddress = nil
|
89
|
+
@saved_ipaddress_count = 0
|
84
90
|
@system_private_keys_path = [
|
85
91
|
'~/.ssh/id_rsa',
|
86
92
|
'~/.ssh/id_ecdsa',
|
@@ -369,7 +375,12 @@ module VagrantPlugins
|
|
369
375
|
@local_lax = 'True'
|
370
376
|
else
|
371
377
|
@local_lax = 'False'
|
378
|
+
end
|
372
379
|
|
380
|
+
if @local_use_ip_cache =~ /false/i
|
381
|
+
@local_use_ip_cache = 'False'
|
382
|
+
else
|
383
|
+
@local_use_ip_cache = 'True'
|
373
384
|
end
|
374
385
|
|
375
386
|
if @guest_snapshot_includememory =~ /true/i
|
@@ -382,6 +393,7 @@ module VagrantPlugins
|
|
382
393
|
else
|
383
394
|
@guest_snapshot_quiesced = ''
|
384
395
|
end
|
396
|
+
|
385
397
|
end
|
386
398
|
end
|
387
399
|
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-02-
|
6
|
+
s.date = '2018-02-28'
|
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']
|
@@ -20,9 +20,13 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.add_runtime_dependency 'log4r', '~> 1.1'
|
21
21
|
s.add_runtime_dependency "iniparse", '> 1.0'
|
22
22
|
s.add_runtime_dependency "nokogiri", '> 1.5'
|
23
|
-
s.add_runtime_dependency "net-ssh", '>
|
23
|
+
#s.add_runtime_dependency "net-ssh", '> 4.0'
|
24
|
+
s.add_runtime_dependency 'rbnacl', '>= 3.2', '< 4.0'
|
25
|
+
s.add_runtime_dependency 'rbnacl-libsodium'
|
26
|
+
s.add_runtime_dependency 'bcrypt_pbkdf', '>= 1.0'
|
24
27
|
|
25
|
-
s.add_development_dependency "bundler"
|
26
|
-
s.add_development_dependency "rspec-core"
|
28
|
+
#s.add_development_dependency "bundler"
|
29
|
+
#s.add_development_dependency "rspec-core"
|
27
30
|
|
28
31
|
end
|
32
|
+
|
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.0.
|
4
|
+
version: 2.0.5
|
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-02-
|
11
|
+
date: 2018-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -67,27 +67,33 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rbnacl
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.2'
|
76
|
+
- - "<"
|
74
77
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
78
|
+
version: '4.0'
|
76
79
|
type: :runtime
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '3.2'
|
86
|
+
- - "<"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
88
|
+
version: '4.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
90
|
+
name: rbnacl-libsodium
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - ">="
|
88
94
|
- !ruby/object:Gem::Version
|
89
95
|
version: '0'
|
90
|
-
type: :
|
96
|
+
type: :runtime
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
@@ -95,19 +101,19 @@ dependencies:
|
|
95
101
|
- !ruby/object:Gem::Version
|
96
102
|
version: '0'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: bcrypt_pbkdf
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :
|
109
|
+
version: '1.0'
|
110
|
+
type: :runtime
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
114
|
- - ">="
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
116
|
+
version: '1.0'
|
111
117
|
description: A Vagrant plugin that adds a VMware ESXi provider support
|
112
118
|
email: josenk@jintegrate.co
|
113
119
|
executables: []
|