I have a setup where I am accessing vCenter and an ESXi host through a NAT layer. If I try to deploy directly to vCenter, ovftool automatically tries to connect to the ip address of the ESXi host behind the NAT layer, which fails.
It looks something like this:
[root@ovfimporter mnt]# date; ovftool --datastore="PayGo Storage" --net:"VLan 4=DedicatedPortGroup_NNNN" CUST/CUST.ovf vi://matthew.wallace@10.10.10.1/Customer\ Datacenter/host/PayGo\ Cluster/Resources/Paygo/NNNN\ \(abc44060-35dc-438a-8c79-6bc7586082ab\)/ ;date
Tue Oct 8 10:18:43 MDT 2013
Opening OVF source: CUST/CUST.ovf
The manifest validates
Enter login information for target vi://10.10.10.1/
Username: matthew.wallace
Password: *********
Opening VI target: vi://matthew.wallace@10.10.10.1:443/Customer%20Datacenter/host/PayGo%20Cluster/Resources/Paygo/NNNN%20(abc44060-35dc-438a-8c79-6bc7586082ab)/
Deploying to VI: vi://matthew.wallace@10.10.10.1:443/Customer%20Datacenter/host/PayGo%20Cluster/Resources/Paygo/NNNN%20(abc44060-35dc-438a-8c79-6bc7586082ab)/
Transfer Failed
Transfer Failed
Error: Lost connection to target
Completed with errors
Tue Oct 8 10:20:19 MDT 2013
Looking at netstat, I saw a hung connection to 443 of one of the ESX hosts in that PayGo Cluster:
tcp | 0 | 1 192.168.0.105:46167 | 172.17.0.10:443 | SYN_SENT |
In this case, 172.17.0.10 is the "real" IP of one of the esx hosts in the PayGo cluster managed by that vCenter, which I can reach from the client running the ovftool only by using the NAT ip of 10.10.10.100.
So, I tried to specify the external ip of that host. Per the ovftool 3.5 user guide:
To convert an OVF package to a vCenter Server, use the following syntax:
> ovftool /ovfs/my_vapp.ovf vi://username:pass@my_vc_server/?ip=10.20.30.40
(Uses a managed ESXi host’s ip address.)
Given that, I tried using several syntaxes:
ovftool --datastore="PayGo Storage" --net:"VLan 4=DedicatedPortGroup_NNNN" CUST/CUST.ovf vi://matthew.wallace@10.10.10.1/Customer\ Datacenter/host/PayGo\ Cluster/Resources/Paygo/NNNN\ \(abc44060-35dc-438a-8c79-6bc7586082ab\)/?ip=10.10.10.100
or even just the simplest version to see if I can get a prompt for going further down in the locator tree:
ovftool --datastore="PayGo Storage" --net:"VLan 4=DedicatedPortGroup_NNNN" "vi://matthew.wallace@10.10.10.1/?ip=10.10.10.100"
I invariably get a result like this:
The manifest validates
Enter login information for target vi://10.10.10.1/
Username: matthew.wallace
Password: *********
Error: Locator does not refer to an object: vi://matthew.wallace@10.10.10.1:443/?ip=10.10.10.100
Completed with errors
Outside of the brief mention of the "ip=xxx" param mentioned in the ovftool userguide I've been unable to find any reference to someone successfully using this parameter so I'm uncertain if this is a bug, my not understanding the intention of the parameter as specified in the OVF tool guide, or me using bad syntax.