Merge pull request #1505 from jasonberanek/issue-1480

builder/vmware-esx: Ignore localhost for VNC lookup and document VNC requirements [GH-1480]
This commit is contained in:
Jason A. Beranek 2014-09-16 23:16:51 -05:00
commit 5e4ffb56d0
2 changed files with 12 additions and 4 deletions

View File

@ -151,6 +151,8 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
var vncPort uint var vncPort uint
//Process ports ESXi is listening on to determine which are available //Process ports ESXi is listening on to determine which are available
//This process does best effort to detect ports that are unavailable,
//it will ignore any ports listened to by only localhost
r, err := d.esxcli("network", "ip", "connection", "list") r, err := d.esxcli("network", "ip", "connection", "list")
if err != nil { if err != nil {
err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err) err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err)
@ -161,10 +163,11 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
for record, err := r.read(); record != nil && err == nil; record, err = r.read() { for record, err := r.read(); record != nil && err == nil; record, err = r.read() {
if record["State"] == "LISTEN" { if record["State"] == "LISTEN" {
splitAddress := strings.Split(record["LocalAddress"], ":") splitAddress := strings.Split(record["LocalAddress"], ":")
log.Print(splitAddress) if splitAddress[0] != "127.0.0.1" {
port := splitAddress[len(splitAddress)-1] port := splitAddress[len(splitAddress)-1]
log.Printf("ESXi Listening on: %s", port) log.Printf("ESXi listening on address %s, port %s unavailable for VNC", record["LocalAddress"], port)
listenPorts[port] = true listenPorts[port] = true
}
} }
} }

View File

@ -342,6 +342,11 @@ ISO and various files locally, and uploads these to the remote machine.
Packer currently uses SSH to communicate to the ESXi machine rather than Packer currently uses SSH to communicate to the ESXi machine rather than
the vSphere API. At some point, the vSphere API may be used. the vSphere API. At some point, the vSphere API may be used.
Packer also requires VNC to issue boot commands during a build,
which may be disabled on some remote VMware Hypervisors. Please consult
the appropriate documentation on how to update VMware Hypervisor's firewall
to allow these connections.
To use a remote VMware vSphere Hypervisor to build your virtual machine, To use a remote VMware vSphere Hypervisor to build your virtual machine,
fill in the required `remote_*` configurations: fill in the required `remote_*` configurations: