You can upgrade or update a host with image profiles stored in a software depot that is accessible through a URL or in an offline ZIP depot.

You can use the esxcli software profile update or esxcli software profile install command to upgrade or update an ESXi host.

When you upgrade or update a host, the esxcli software profile update or esxcli software profile install command applies a later version (major or minor) of a full image profile onto the host. After this operation and a reboot, the host can join a vCenter Server environment of the same or later version.

The esxcli software profile update command brings the entire content of the ESXi host image to the same level as the corresponding upgrade method using an ISO installer. However, the ISO installer performs a pre-upgrade check for potential problems, such as insufficient memory or unsupported devices. The esxcli upgrade method only performs such checks when upgrading from ESXi 6.7 Update 1 or later to a newer version.
Note: Do not use the --dry-run option for upgrades from ESXi 6.7.x and ESXi 7.0.x versions earlier than 7.0 Update 3i, to ESXi 8.0 and later. When the --dry-run option is removed, you can still use the esxcli upgrade method to upgrade from ESXi 6.7 Update 1 or later to ESXi 8.0 or later. For ESXi versions earlier than 6.7 Update 1, you must first upgrade to 6.7 Update 1 or later before you upgrade to ESXi 8.0 or later.

For more about the ESXi upgrade process and methods, see Overview of the ESXi Host Upgrade Process.

Important: If you are upgrading or updating ESXi from a VMware online depot or an offline .zip bundle downloaded locally from the Broadcom Support Portal, VMware supports only only the update command esxcli software profile update --depot=<depot_location> --profile=<profile_name>. ESXCLI commands support 2 types of depot location: either a full path to a locally downloaded offline .zip bundle, such as /vmfs/volumes/<datastore_name>/<depot_ name>.zip, or an http/https link to the index.xml in an online depot, such as https//<web_server>/<depot_name>/index.xml. You can extract an offline .zip bundle and host it as an online depot on a private http/https server accessible to an ESXi host.

When you specify a target server by using --server=<server_name>, the server prompts you for a user name and password. Other connection options, such as a configuration file or session file, are supported. For a list of connection options, see Getting Started with ESXCLI, or run esxcli --help at the ESXCLI command prompt.

Note:

Options to the update and install commands allow you to perform a dry run, to bypass acceptance level verification, to ignore hardware compatibility check warnings, and so on. The option to bypass hardware compatibility check warnings is only available for ESXi 6.7 Update 1 or later. Do not bypass verification on production systems.

For options help, type esxcli software profile install --help or esxcli software profile update --help. For the complete listing of available command-line options, see the ESXCLI Reference.

Prerequisites

  • Install Standalone ESXCLI. See Getting Started with ESXCLI. For troubleshooting, run esxcli commands in the ESXi Shell.
  • Determine whether the update requires the host to be in maintenance mode or to be rebooted. If necessary, place the host in maintenance mode.

    See See if ESXi Host Update Requires Maintenance Mode or Reboot. See Place a Host in Maintenance Mode.
    Important: When you use ESXCLI to update or upgrade the host, put the host manually in maintenance mode to ensure that the boot disk is not actively in use before the upgrade begins.
  • If the update requires a reboot, and if the host belongs to a vSphere HA cluster, remove the host from the cluster or deactivate HA on the cluster.

Procedure

  1. Determine which VIBs are installed on the host.
    esxcli --server=<server_name> software vib list
  2. Determine which image profiles are available in the depot.
    esxcli --server=<server_name> software sources profile list --depot=http://<depot_location>/<depot_name>

    You can specify a proxy server by using the --proxy option.

  3. Update the existing image profile to include the VIBs or install new VIBs.
    Important: The software profile update command updates existing VIBs with the corresponding VIBs from the specified profile, but does not affect other VIBs installed on the target server. The software profile install command installs the VIBs present in the depot image profile, and removes any other VIBs installed on the target server.
    Option Description
    Update the image profile from a VMware-supplied ZIP bundle, in a depot, accessible online from the Broadcom Support Portal or downloaded to a local depot
    esxcli software profile update --depot=<depot_location> --profile=<profile_name>
    Important: This is the only update method that VMware supports for zip bundles supplied by VMware.

    VMware-supplied ZIP bundle names take the form: VMware-ESXi-<version_number>-<build_number>-depot.zip.

    The profile name for VMware-supplied zip bundles takes one of the following forms.

    • ESXi-<version_number>-<build_number>-standard
    • ESXi-<version_number>-<build_number>-notools (does not include VMware Tools)
    Update the image profile from a depot accessible by URL
    esxcli --server=<server_name> software profile update --depot=http://<depot_location>/<depot_name> --profile=<profile_name>
    Update the image profile from ZIP file stored locally on the target server
    esxcli --server=<server_name> software profile update --depot=file:///<path_to_profile_ZIP_file>/<profile_ZIP_file> --profile=<profile_name>
    Update the image profile from a ZIP file on the target server, copied into a datastore
    esxcli --server=<server_name> software profile update --depot=<datastore_name>/<profile_ZIP_file> --profile=<profile_name>
    Update the image profile from a ZIP file copied locally and applied on the target server
    esxcli --server=<server_name> software profile update --depot=/<root_dir>/<path_to_profile_ZIP_file>/<profile_ZIP_file> --profile=<profile_name>
    Install all new VIBs in a specified profile accessible by URL
    esxcli --server=<server_name> software profile install --depot=http://<depot_location>/<depot_name> --profile=<profile_name>
    Install all new VIBs in a specified profile from a ZIP file stored locally on the target.
    esxcli --server=<server_name> software profile install --depot=file:///<path_to_profile_ZIP_file>/<profile_ZIP_file> --profile=<profile_name>
    Install all new VIBs from a ZIP file on the target server, copied into a datastore
    esxcli --server=<server_name> software profile install --depot=<datastore_name>/<profile_ZIP_file> --profile=<profile_name>
    Install all new VIBs from a ZIP file copied locally and applied on the target server
    esxcli --server=<server_name> software profile install --depot=/<root_dir>/<path_to_profile_ZIP_file>/<profile_ZIP_file> --profile=<profile_name>
  4. Reboot the ESXi host immediately if in the ESXCLI output you see Reboot Required: true.
    Note: If you do not reboot the ESXi host and continue, further modifications to the host, such as installation of a VIB, might fail or not take effect due to the pending reboot.
  5. Verify that the VIBs are installed on your ESXi host.
    esxcli --server=<server_name> software vib list