Commit a64662e9 authored by Mitchell Hashimoto's avatar Mitchell Hashimoto

Merge pull request #1110 from higebu/revert-the-way-to-retrieve-vm-ip-in-esxi-driver

Revert the way to retrieve VM IP in Remote ESXi Builder
parents 5a4a5842 c3257fd6
...@@ -174,18 +174,35 @@ func (d *ESX5Driver) SSHAddress(state multistep.StateBag) (string, error) { ...@@ -174,18 +174,35 @@ func (d *ESX5Driver) SSHAddress(state multistep.StateBag) (string, error) {
return address.(string), nil return address.(string), nil
} }
r, err := d.run(nil, "vim-cmd", "vmsvc/get.guest", d.vmId, " | grep -m 1 ipAddress | awk -F'\"' '{print $2}'") r, err := d.esxcli("network", "vm", "list")
if err != nil { if err != nil {
return "", err return "", err
} }
ipAddress := strings.TrimRight(r, "\n") record, err := r.find("Name", config.VMName)
if err != nil {
return "", err
}
wid := record["WorldID"]
if wid == "" {
return "", errors.New("VM WorldID not found")
}
r, err = d.esxcli("network", "vm", "port", "list", "-w", wid)
if err != nil {
return "", err
}
record, err = r.read()
if err != nil {
return "", err
}
if ipAddress == "" { if record["IPAddress"] == "0.0.0.0" {
return "", errors.New("VM network port found, but no IP address") return "", errors.New("VM network port found, but no IP address")
} }
address := fmt.Sprintf("%s:%d", ipAddress, config.SSHPort) address := fmt.Sprintf("%s:%d", record["IPAddress"], config.SSHPort)
state.Put("vm_address", address) state.Put("vm_address", address)
return address, nil return address, nil
} }
......
...@@ -323,6 +323,16 @@ In addition to using the desktop products of VMware locally to build ...@@ -323,6 +323,16 @@ In addition to using the desktop products of VMware locally to build
virtual machines, Packer can use a remote VMware Hypervisor to build virtual machines, Packer can use a remote VMware Hypervisor to build
the virtual machine. the virtual machine.
<div class="alert alert-block alert-info">
Note: Packer supports ESXi 5.1 and above.
</div>
Before using a remote vSphere Hypervisor, you need to enable GuestIPHack by running the following command:
```
esxcli system settings advanced set -o /Net/GuestIPHack -i 1
```
When using a remote VMware Hypervisor, the builder still downloads the When using a remote VMware Hypervisor, the builder still downloads the
ISO and various files locally, and uploads these to the remote machine. 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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment