Skip to content

Commit

Permalink
Merge pull request #1505 from jasonberanek/issue-1480
Browse files Browse the repository at this point in the history
builder/vmware-esx: Ignore localhost for VNC lookup and document VNC requirements [GH-1480]
  • Loading branch information
jasonberanek committed Sep 17, 2014
2 parents a7122b3 + 58a50e0 commit 5e4ffb5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
11 changes: 7 additions & 4 deletions builder/vmware/iso/driver_esx5.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,8 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
var vncPort uint

//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")
if err != nil {
err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err)
Expand All @@ -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() {
if record["State"] == "LISTEN" {
splitAddress := strings.Split(record["LocalAddress"], ":")
log.Print(splitAddress)
port := splitAddress[len(splitAddress)-1]
log.Printf("ESXi Listening on: %s", port)
listenPorts[port] = true
if splitAddress[0] != "127.0.0.1" {
port := splitAddress[len(splitAddress)-1]
log.Printf("ESXi listening on address %s, port %s unavailable for VNC", record["LocalAddress"], port)
listenPorts[port] = true
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions website/source/docs/builders/vmware-iso.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -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
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,
fill in the required `remote_*` configurations:

Expand Down

0 comments on commit 5e4ffb5

Please sign in to comment.