Upgrading from ESXi 6.5 to ESXi 6.7 via SSH and esxcli
Following VMware’s release of ESXi 6.7, I upgraded my ESXi 6.5 server to ESXi 6.7 using SSH and esxcli. For those interested, see below the jump for the details of the process I used.
To upgrade from ESXi 6.5 to 6.7 using esxcli
1. Shut down all VMs running on your ESXi host machine.
2. Enable SSH on your ESXi server, if it is not already enabled.
3. Connect via SSH.
4. Once logged in, run the following command to enter maintenance mode:
vim-cmd /hostsvc/maintenance_mode_enter
5. After putting ESXi into maintenance mode, run the following command to set the correct firewall rules for the httpClient:
esxcli network firewall ruleset set -e true -r httpClient
6. Next, run the following command to list the ESXi 6.7 updates available. You want the latest one that ends in -standard for your version of VMware.
esxcli software sources profile list -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml | grep ESXi-6.7
7. Once you’ve identified the correct version of VMware (as of 5-18-2018, this is ESXi-6.7.0-8169922-standard), run the following command to download and install the update.
esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.7.0-8169922-standard
Note: It is very important that you run esxcli software profile update here. Running esxcli software profile install may overwrite drivers that your ESXi host needs.
8. Once the update has been installed and prompts you to reboot, run the following command to restart:
reboot
9. After your ESXi host restarts, connect via SSH and run the following command to exit maintenance mode:
vim-cmd /hostsvc/maintenance_mode_exit
At this point, your ESXi host should be upgraded to ESXi 6.7.0.
As always, thanks for this, Rich.
3 snags I ran into in our upgrade that I had to figure on our ESXi host in order to upgrade to 6.7:
1) Enabling SSH. While the SSH Server firewall rule was enabled, the SSH service was not enabled. I enabled this by going to Host > Manage > Services > and enabling TSM-SSH.
2) Entering maintenance mode. Wasn’t able to do this via the command line for some reason, so I did this via the Web GUI: Host > Actions > Enter maintenance mode
3) Enabling swap. When first running the esxcli software profile update command, I got a “Errno 28 No space left on device” error. Found this thread (https://communities.vmware.com/thread/560543) and determined that while swap was enabled on the host it was not assigned to a datastore. Host > Manage > Swap > Make sure is enabled, datastore is selected, and that host cache and local swap were enabled (Host cache and local swap were enabled on our host by default)
Brilliant thanks. I too had the swap issue, so followed @aporlebeke suggestion and all worked swimmingly! Many thanks
what a helpful post. the only step I had to add was to configure dns server.
esxcli network ip dns server add –server=8.8.8.8
rest of the steps and upgrade completed without any issues. Thanks.
hi all
I tried this upgrade process including the steps mentioned by aporlebeke but it did not work.
I’ve got the following output:
[root@ESXI:~] esxcli software profile update -d https://hostupdate.vmware.com/so
ftware/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.7.0-8169922-standard
[InstallationError]
Failed updating the bootloader: Execution of command /usr/lib/vmware/bootloader-installer/install-bootloader failed: non-zero code returned
return code: 1
output: ERROR: ld.so: object ‘/lib/libMallocArenaFix.so’ from LD_PRELOAD cannot be preloaded: ignored.
Traceback (most recent call last):
File “/usr/lib/vmware/bootloader-installer/install-bootloader”, line 267, in
main()
File “/usr/lib/vmware/bootloader-installer/install-bootloader”, line 234, in main
partType, diskGeom, parts = getDiskInfo(diskPath)
File “/usr/lib/vmware/bootloader-installer/install-bootloader”, line 155, in getDiskInfo
rc, out, err = execCommand(command)
File “/usr/lib/vmware/bootloader-installer/install-bootloader”, line 98, in execCommand
raise Exception(“%s failed to execute: status(%d)” % (command, process.returncode))
Exception: /sbin/partedUtil getptbl /vmfs/devices/disks/mpx.vmhba32:C0:T0:L0 failed to execute: status(255)
vibs = VMware_bootbank_esx-base_6.7.0-0.0.8169922
Please refer to the log file for more details.
btw: ESXI is installed on a 16 GB stick. Any idea how to fix this? thanks a lot.
thanks for the learning
brilliant, thanks for this excellent HOWTO (upgrade ESXi 6.5 to 6.7U2)
6.7U2 needing: esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.7.0-20190402001-standard
5/5/2020 – i needed skip sign check, updated succesfully
esxcli software profile update -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml -p ESXi-6.7.0-20200404001-standard –no-sig-check
I have followed these instructions a few times but my server keeps showing as 6.5.0 Update 2 (Build 13873656) despite there being no errors during the upgrade. Any idea why this would be? Thanks