VMware ESXi Upgrades and Updates with ESXCLI

This post details the steps to upgrade ESXi where VUM is not available or direct access to the hosts is difficult e.g remote office/datacentre.


  • Root or similar access to the host (can be via the VMA)
  • Offline bundle of the ESXi image (.zip format)
  • Putty or similar to access the shell
  • Host should be in maintenance mode
  • HA should be disabled on cluster

Start the ESXi Shell and SSH services, select the host –> Configuration –> Security Profile –>Properties –> ESXi Shell –> Options –> Start

Repeat for the SSH Service


Open a shared or local datastore on the applicable host, select the host –> Configuration –> Storage, right-click on the applicable datastore and select Browse Datastore.


Select the Upload Files to this Datastore button, select Upload File and browse to and select the .ZIP of the ESXi offline bundle to upload.


Run an SSH client e.g putty to SSH to the shell of the host.

Find Image Profiles

Find the available image profiles within the offline bundle by running the esxcli command:

esxcli software sources profile list -d /vmfs/volumes/<volume>/<ZIPFILE>.zip

*esxcli is case sensitive and paths can be tab completed*

Validate Image Profile

Validate current profile against new image profile use the command:

esxcli software profile validate -d /vmfs/volumes/<volume>/<ZIPFILE>.zip -p <profile>

You should see:

Profile Validation Result
Compliance: True

If the validation result returns false, you can still proceed with the update or upgrade if you confirm the invalid vib is not applicable.


An update will replace existing vibs with new vibs and include vibs that are not currently on the installed image profile.

esxcli software profile update -d /vmfs/volumes/<volume>/<ZIPFILE>.zip -p <profile>

*use -f to force the update, will be required for a false validation of the image profile*


An upgrade replaces the current image profile with the image profile specified in the command. All vibs including manual additions to the current installed image profile may be removed. If there are custom vendor vibs, either use the Update option or manually apply the custom vibs after the upgrade.

esxcli software profile install -d /vmfs/volumes/<volume>/<ZIPFILE>.zip -p <profile>

*if the upgrade fails due to custom vibs, you can use the parameter –ok-to-remove at the end of the command*


Once the update or upgrade is complete, type the command reboot

WD NAS as VMware NFS Datastore

I came across a use case for using a Western Digital MyBook Live as a VMware NFS datastore, I’m fairly sure this can be completed on similar devices with a bit of configuration.

This initial task is to access the shell of the WD MyBook, this can be completed by accessing the ip or hostname of the device through the web url as documented here, below is a quick reference.

  1. Login to the URL of WD MyBook http://ipaddress, if address is unknown, try using DHCP to find a reservation
  2. Change the URL to http://ipaddress/UI/ssh
  3. Tick active SSH

Next you will need to create an SSH session to the IP address of the WD MyBook in this case I am using putty, the default credentials are below:

username: root 

password: welc0me

We then need to create the NFS share and configure the permissions for the share (thanks to Falco Timme).

  1. Type su and hit enter to raise the rights to sudo “admin”
  2. Type the command mkdir /nfs/sharename/ where sharename is the name of your share.
  3. Enter vi editor to edit the exports file with the command vi /etc/exports (This is to configure the share permissions)
  4. Edit the file as shown below replacing the 192.168.X.X with the IP of the ESXi host (deleting the other lines from the file will stop the web interface from working), i for insert (use the arrow keys to navigate, :wq! to save and exit, :q! to exit without saving. Excellent Vi Editor tut here. *Add additional entries for extra hosts*2015-09-14_23-41-53
  5. Type the command exportfs -a hit enter and type reboot, hit enter to complete.

We now need to map the NFS drive in ESXi as below:

Via VI Client

  1. Open a vi client to the ESXi host and select the Configuration tab
  2. Select Storage on the left and Add Storage on the right
  3. Select the option Network File System and click Next
  4. Enter Server hostname or IP, folder as /nfs/sharename and give the datastore a name, click Next2015-09-16_22-49-54
  5. Select Finish to complete

Via ESXi Shell

  1. Create putty session to ESXi Host
  2. Enter the command esxcli storage nfs add -H hostnameorIP -s /nfs/sharename -v datastorename and hit enter.2015-09-16_23-10-12

I will be attempting the same with a Buffalo Link station in the coming weeks but its food for thought in terms of a reuse for cheap ESXi NFS Storage!