VCF 9.1 VCF Download Tool (VCFDT) Cheatsheet: Commands, Filters and Examples

VCF Download Tool 9.1 commands: register with an activation code, list and download VCF/VVF binaries, ESX metadata, filters, proxy, upload and export.

Short answer: In VCF 9.1 the VCF Download Tool (vcf-download-tool, VCFDT) is the only supported way to fetch binaries for environments without Internet access. The workflow is: generate a software depot ID, register it in the VCF Business Services console to get an activation code, save the code to a file, then run binaries list and binaries download with --sku, --vcf-version and --type filters into a --depot-store directory.

This is a command-first cheatsheet. Every command and option below is taken from the VCF 9.1 Download Tool command reference. If you are building the web server side, see the related post VCF 9.1 HTTP offline depot support.

Get the VCF Download Tool 9.1 and register it

Download the tool from the Broadcom Support Portal (My Downloads, VMware Cloud Foundation, Drivers & Tools). The archive contains a bin/ folder with vcf-download-tool (vcf-download-tool.bat on Windows) and lcm-bundle-transfer-util.

tar -xvzf vcf-download-tool-9.1.0.0.<build_number>.tar.gz
cd vcf-download-tool-9.1.0.0.<build_number>/bin

# 1. Generate a unique software depot ID for this VCFDT instance
./vcf-download-tool configuration generate --software-depot-id

# 2. In the VCF Business Services console: Software Depot Registrations >
#    New Registration, paste the ID, then save the activation code to a file
echo "<activation-code>" > /path/to/activation-code.txt

VCF Download Tool command groups

GroupPurpose
binariesList, download, upload, clean up, export VCF install/upgrade/patch binaries; create download specs
esxESX binaries and metadata for vSphere Lifecycle Manager images
metadataUnified release manifest, product version catalog, vSAN HCL, compatibility data
releasesShow available VCF releases and product details
depotUpload, list and remove content in a connected software depot
artifactsWorkload component artifacts (VCFDT 9.1.1 and later)

Each group has its own help: vcf-download-tool binaries -h, esx -h, and so on. -v prints the tool version and --ceip ENABLE|DISABLE sets CEIP participation.

vcf-download-tool binaries list and download commands

list and download require at least one filter. Always list first so you see component, version, size and type before pulling tens of gigabytes.

AC=/path/to/activation-code.txt
STORE=/path/to/binaries

# Install binaries used by the VCF Installer
./vcf-download-tool binaries list --sku VCF --vcf-version 9.1 \
  --depot-download-activation-code-file $AC --type INSTALL --automated-install

./vcf-download-tool binaries download --sku VCF --vcf-version 9.1 \
  --depot-download-activation-code-file $AC --type INSTALL --automated-install \
  --depot-store $STORE

# Upgrade binaries managed by SDDC Manager
./vcf-download-tool binaries download --sku VCF --vcf-version 9.1 \
  --depot-download-activation-code-file $AC --type UPGRADE \
  --lifecycle-managed-by SDDC_MANAGER_VCF --depot-store $STORE

# A single component (example: VCF Automation)
./vcf-download-tool binaries download --sku VCF --vcf-version 9.1 \
  --depot-download-activation-code-file $AC --component VRA --type INSTALL \
  --depot-store $STORE

For VMware vSphere Foundation replace --sku VCF with --sku VVF.

Filter options

OptionWhat it does
--sku VCF|VVFProduct SKU
--vcf-versiona.b, a.b.c, a.b.c.d or a range start..end
-t, --type INSTALL|UPGRADEInstall or upgrade binaries
--automated-installOnly binaries required by the VCF Installer
--componentOne component, e.g. ESX_HOST, NSX_T_MANAGER, SDDC_MANAGER_VCF
--component-versionA specific component version
--lifecycle-managed-bySDDC_MANAGER_VCF, VRSLCM, VCF_FLEET_LCM or SELF
--patches-only / --upgrades-onlyOnly patch or only upgrade versions
--idOne or more bundle IDs
--download-spec-fileOnly what a planned upgrade needs
--latestOnly the latest versions (9.1.1 and later)

ESX binaries, metadata and artifacts

# ESX binaries and metadata (progress in ./logs/esximage.log)
./vcf-download-tool esx download --depot-download-activation-code-file $AC \
  --depot-store $STORE

# ESX metadata only (8.x and 9.x upgrades and patches)
./vcf-download-tool esx metadata --depot-store=$STORE \
  --depot-download-activation-code-file=$AC

# Workload component artifacts (VCFDT 9.1.1+)
./vcf-download-tool artifacts download --sku VCF --vcf-version 9.1 \
  --depot-download-activation-code-file $AC --depot-store $STORE

Upload, download spec, export and cleanup

# Build a spec from planned upgrades of a workload domain
./vcf-download-tool binaries create-download-spec --domain-name <domain> \
  --download-spec-dir /path/to/spec ...

# Push downloaded content to SDDC Manager
./vcf-download-tool binaries upload --depot-store $STORE \
  -f sddc-manager.example.local -u administrator@vsphere.local \
  --sddc-manager-user-password-file /path/to/pw.txt

# Pack the depot store into a tar file for a transfer
./vcf-download-tool binaries export --depot-store $STORE --depot-file /path/to/depot.tar

# Remove obsolete binaries, keep what you still need
./vcf-download-tool binaries cleanup --depot-store $STORE ...

The ... means add the same filters you would use for list; check binaries -h for the exact combination your build accepts.

Proxy and practical tips

  • Proxy: -s, --proxy-server fqdn:port, --proxy-https (add the proxy CA to the JRE trust store), -r, --proxy-user, --proxy-user-password-file. Kerberos and NTLMv2 proxies are not supported.
  • Passwords and codes always go in files, never on the command line, so they do not end up in shell history.
  • Downloads run for a long time. Enable TCP keepalive in your SSH client or run inside tmux/screen.
  • If VCFDT and the web server are different machines, copy the depot store to the offline depot and then connect the software depot to it. A small lab walkthrough is in Deploying a minimal VCF 9.0 lab.

Further reading

VCF 9.1: Automating VCF Single Sign-On (SSO) with an OIDC Identity Provider via the VCF Operations API

How VCF 9.1 SSO setup with a generic OIDC IdP can be scripted through VCF Operations APIs: inputs, call sequence, support caveats, API tokens.

Short answer: In VCF 9.1 you configure VCF Single Sign-On from VCF Operations. The wizard covers identity broker mode, the OIDC identity provider, vCenter and NSX, role assignment, and VCF Operations and Automation. Behind it are VCF Operations calls under /suite-api/internal/vidb/, and a script can replay them to finish the setup in about a minute. Those endpoints are internal, so treat this as lab or test automation. For production, use the wizard or the public APIs.

What changed for VCF SSO in 9.1

  • Generic OIDC and generic SAML 2.0. Besides Okta, Ping, Entra ID, ADFS and Symantec, VCF 9.1 accepts any OIDC or SAML 2.0 identity provider, for example Keycloak (supported IdPs and protocols). You still get one identity provider per identity broker.
  • Two identity broker modes. Embedded runs in the management domain vCenter. Instance is deployed as a VCF management services component (Deployment Modes of the Identity Broker).
  • User and group provisioning through SCIM 2.0, JIT (with pre-provisioned or JIT-created groups) or AD/LDAP.
  • API clients and tokens for non-interactive logins, plus a break-glass emergency access client.

If you’re setting up Keycloak by hand on VCF 9.0, the IdP-side configuration is in VCF 9.0 Single Sign-On (SSO) with Keycloak IdP. This article covers only the automation in 9.1.

Inputs you need before you script it

InputNotes
VCF Operations FQDN and local admin credentialsUsed to get an API token
Identity broker modeEmbedded (vCenter) or instance (VCF management services)
OIDC discovery URLThe IdP’s .well-known/openid-configuration address
IdP TLS certificate chainFull chain in PEM format
Client ID and client secretFrom the OIDC client you created in the IdP. The secret usually expires, and you then update it in VCF.
Login domain(s)The domain users log in with
Admin group and group claimPre-provisioned JIT group that gets the VCF administrator role

Configure the IdP to send these case-sensitive claims: preferred_username, email, family_name, given_name, groups and domain. If it can’t, map alternative claim names in VCF Operations under Identity & Access (Configure an Identity Provider using Generic OIDC).

The call sequence

The script follows the documented wizard steps in order. Every call goes to VCF Operations:

Wizard stepEndpoint (under /suite-api)
AuthenticatePOST /api/auth/token/acquire (public API)
Acknowledge prerequisitesPUT /internal/vidb/globalidpsettings
Step 1: deployment modePOST /internal/vidb/ssodomains, POST /internal/vidb/ssoconfigstatus
Step 2: identity provider (generic OIDC)POST /internal/vidb/identityproviders
Step 3: vCenter and NSXPOST /internal/vidb/authsources/query, POST /internal/vidb/authsources/manage
Step 4: VCF role to IdP groupPOST /internal/vidb/ssodomains/{id}/assignments/bulk
Step 5: VCF Operations and AutomationPOST /internal/vidb/authsources/manage
FinishPUT /internal/vidb/ssoconfigstatus

Authentication uses the public Suite API. The internal calls then need two extra headers:

curl -sk -X POST https://vcf-ops.example.com/suite-api/api/auth/token/acquire \
  -H 'Content-Type: application/json' -H 'Accept: application/json' \
  -d '{"username":"admin","password":"<password>","authSource":"local"}'

# every /suite-api/internal/vidb/* call afterwards:
#   Authorization: OpsToken <token>
#   X-Ops-API-use-unsupported: true

Supportability: read this first

The X-Ops-API-use-unsupported header is how VCF Operations marks internal endpoints. They aren’t a documented contract, and payloads can change in any patch. Use the script to rebuild labs and test environments quickly. In production, configure SSO with the wizard, or check whether the public Identity Broker API covers the step you want to automate. The script also has a reset option that deletes the SSO domain, so never point it at a shared environment by mistake.

After SSO: API clients and tokens for automation

Once VCF SSO is running, don’t let scripts log in as a human account. In VCF Operations go to Manage > Fleet Management Identity & Access > VCF SSO Overview > (identity broker) > API Access, create an API client, scope a role to it, and generate an API token (Create an API Client and Generate an API Token):

  • API token TTL defaults to 30 days and access token TTL to 30 minutes. The maximums are set under Fleet Settings > IAM Setting.
  • You see the token only once, when you generate it.
  • The emergency access client gets the highest role. Its token defaults to 180 days, and only one exists at a time.

SSO touches certificates on every component. If logins break after the change, check vCenter STS signing certificate expiration first.

Further reading

VCF 9.x Upgrade Stuck on vRNI / Aria Operations for Networks SSL Thumbprint Validation

VCF 9.x upgrade keeps failing on the vRNI / Aria Operations for Networks thumbprint after a cert change? Clear the stale thumbprint cached in SDDC Manager.


During a VMware Cloud Foundation upgrade, you may hit a situation where the upgrade workflow fails on validation of the vRNI / Aria Operations for Networks certificate thumbprint.

Even after replacing the certificate directly on the vRNI appliance, clicking Retry in SDDC Manager may continue to fail with the old certificate thumbprint.

This can be confusing because the certificate on the vRNI side is already correct, but SDDC Manager still validates against the previous thumbprint.

Root Cause

The root cause is that SDDC Manager caches the SSL thumbprint either in its internal database, platformdb, or in the LCM / Domain Manager service memory when the upgrade task is first initialized.

As a result, even if the certificate is replaced on the vRNI / Aria Operations for Networks appliance, the Retry button does not automatically rediscover the new certificate thumbprint.

Instead, the retry operation may continue to use the old cached value.

To resolve this, the thumbprint stored in the SDDC Manager inventory database must be updated manually.

Warning:
This procedure modifies the internal SDDC Manager database. Use it only when you fully understand the impact. Always take a backup or snapshot of the SDDC Manager appliance before making manual database changes. In production environments, validate with VMware/Broadcom support first.


Step 1: Extract the New Certificate Thumbprint from vRNI

Log in to the SDDC Manager appliance via SSH.

Usually this means logging in as vcf and then switching to root:

su -

Now retrieve the SHA-256 fingerprint of the currently installed certificate on the vRNI / Aria Operations for Networks appliance:

echo -n | openssl s_client -connect <VRNI_FQDN_OR_IP>:443 2>/dev/null | openssl x509 -noout -fingerprint -sha256

Example output:

sha256 Fingerprint=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Copy only the thumbprint value, without the prefix:

XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Step 2: Check the Current Thumbprint in SDDC Manager Database

Connect to the SDDC Manager PostgreSQL database:

psql -h localhost -U postgres -d platformdb

Now locate the vRNI / Aria Operations for Networks resource record:

SELECT id, type, status, ssl_thumbprint
FROM resource
WHERE type LIKE '%VRNI%'
OR type LIKE '%ARIA%';

Identify the row that belongs to your vRNI / Aria Operations for Networks appliance.

You should see that the ssl_thumbprint column still contains the old thumbprint, for example:

EF:0B:A2:15:...

Step 3: Update the Stored Thumbprint

Update the resource record with the new thumbprint:

UPDATE resource
SET ssl_thumbprint='<NEW_THUMBPRINT>'
WHERE id='<COMPONENT_ID>';

Example:

UPDATE resource
SET ssl_thumbprint='=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX'
WHERE id='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

Verify the change:

SELECT id, type, status, ssl_thumbprint
FROM resource
WHERE id='<COMPONENT_ID>';

Exit PostgreSQL:

\q

Step 4: Restart LCM and Domain Manager Services

SDDC Manager may still cache inventory data in memory, so restart the relevant services:

systemctl restart lcm
systemctl restart domainmanager

Wait a few minutes until the services are fully initialized.

You can monitor the LCM service log with:

tail -f /var/log/vmware/vcf/lcm/lcm.log

Step 5: Reset a Stuck Upgrade Task if Needed

In some cases, the upgrade task may remain stuck in an IN_PROGRESS state or the Retry button may stay unavailable.

If this happens, check the active execution tasks in the SDDC Manager database.

Connect again to PostgreSQL:

psql -h localhost -U postgres -d platformdb

Find tasks that are still marked as running:

SELECT id, status, action
FROM execution_task
WHERE status='IN_PROGRESS';

Identify the specific stuck task related to the failed upgrade validation.

Then manually mark it as failed:

UPDATE execution_task
SET status='FAILED'
WHERE id='<TASK_ID>';

Exit PostgreSQL:

\q

Step 6: Resume the Upgrade

Return to the SDDC Manager UI and refresh the upgrade page.

The upgrade workflow should now allow you to click Retry again.

This time, SDDC Manager should read the corrected thumbprint from the database, validate it against the current vRNI / Aria Operations for Networks certificate, and continue with the VCF 9.x upgrade.


Summary

If a VCF 9.x upgrade continues to fail on vRNI / Aria Operations for Networks certificate validation even after the certificate has been replaced, the issue may not be the certificate itself.

The problem can be caused by a stale SSL thumbprint cached in SDDC Manager.

The fix is to:

  1. Extract the new SHA-256 certificate thumbprint from vRNI.
  2. Update the corresponding ssl_thumbprint value in platformdb.
  3. Restart the lcm and domainmanager services.
  4. Reset the stuck execution task if required.
  5. Retry the upgrade from the SDDC Manager UI.

This is a useful recovery procedure when the UI retry mechanism continues to use stale inventory data instead of the actual certificate currently installed on the vRNI appliance.

Holodeck 9.0.2 with VCF 9.0.2.0 Stuck at Install-VcfInstallerBundles

Holodeck 9.0.2 with VCF 9.0.2.0 hangs at Install-VcfInstallerBundles: why the API returns 8 bundles, the PowerShell workaround, and the proper fix.


Bug VCF 9.0.2.0 with Holodeck 9.0.2

While deploying VMware Cloud Foundation 9.0.2.0 with Holodeck 9.0.2, I hit an interesting issue during the bundle download phase.

The deployment did not fail with a clear error. Instead, it stalled indefinitely at:

Install-VcfInstallerBundles

At first glance, everything looked fine. The VCF Installer depot UI showed all required components as downloaded successfully. However, the Holodeck deployment kept waiting forever.

The root cause turned out to be a hardcoded bundle count check inside the Holodeck PowerShell module.


Environment

The issue was observed with the following setup:

Holodeck:        9.0.2
HoloRouter OVA: 9.0.2.0424
VCF Installer: 9.0.2.0
Target VCF: 9.0.2.0
Deployment: Full VCF, ManagementOnly
Depot: Online depot

Important detail: this was full VCF, not VVF.


Symptom

During deployment, the log repeatedly showed:

SddcMgmtDomain[<pid>]: [INFO] Received Bundles. Checking if all VCF 9 bundles are available
SddcMgmtDomain[<pid>]: [INFO] Didn't receive all bundles. Received 8 bundle details. Trying again after 10 seconds

This message repeated every 10 seconds.

At the same time, the VCF Installer UI showed all visible components as successfully downloaded:

SDDC Manager 9.0.2.0
VMware Cloud Foundation Automation 9.0.2.0
VMware Cloud Foundation Operations 9.0.2.0
VMware Cloud Foundation Operations Collector 9.0.2.0
VMware Cloud Foundation Operations fleet management 9.0.2.0
VMware NSX 9.0.2.0
VMware vCenter 9.0.2.0

So from the UI perspective, everything looked complete. However, Holodeck was still waiting.


Root Cause

The problematic logic is inside the Holodeck PowerShell module on the deployed HoloRouter:

/root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1

The affected function is:

Install-VcfInstallerBundles

Holodeck queries the VCF Installer API:

https://${HostName}/v1/bundles/download-status?imageType=INSTALL

Then it filters bundles matching the selected VCF version:

}elseif($Version -eq "9.0.2.0"){
$vcf9_bundle_details = $bundle_details.elements | Where-Object {$_.version -match "9\.0\.2\.0\.*"}
}

The problem is the final count check:

elseif($vcf9_bundle_details.count -eq 7){
Write-Log -Message "Received all Bundle Details"
$bundle_api_response = $true
}
else{
Write-Log -Message "Didn't receive all bundles. Received $($vcf9_bundle_details.count) bundle details. Trying again after 10 seconds"
Start-Sleep -Seconds 10
}

For VCF 9.0.2.0, the API returns 8 matching bundle entries, not 7.

That means this condition never becomes true:

$vcf9_bundle_details.count -eq 7

Holodeck receives 8 bundles, but waits for exactly 7.

Result: an infinite loop.


Why Does the API Return 8 Bundles?

In VCF 9.0.2.0, the bundle structure changed compared to earlier VCF 9 versions.

The depot UI shows 7 visible rows, but the API response contains 8 entries matching:

9.0.2.0.*

The 9.0.2 BOM appears to split some components more granularly, for example around VCF Operations, Operations Collector, and Fleet Management. The UI abstracts this nicely, but the API exposes one additional bundle-level entry.

The important part is this:

VCF Installer UI: 7 visible downloaded components
VCF Installer API: 8 matching bundle entries
Holodeck logic: expects exactly 7

That mismatch is enough to block the deployment.


Workaround

Edit the Holodeck module directly on the HoloRouter.

Change this:

}elseif($vcf9_bundle_details.count -eq 7){

To this:

}elseif($vcf9_bundle_details.count -ge 7){

One-liner:

sed -i 's/$vcf9_bundle_details.count -eq 7/$vcf9_bundle_details.count -ge 7/' \
/root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1

This changes the check from “exactly 7 bundles” to “at least 7 bundles”.


Restart the Running PowerShell Session

The currently running pwsh process already has the old function loaded in memory.

After patching the file, kill the running PowerShell process:

pkill -9 -f pwsh

Then start a fresh PowerShell session and resume the deployment:

Import-HoloDeckConfig -ConfigID <id>

New-HoloDeckInstance -Version 9.0.2.0 -InstanceID <same-as-before> <original flags>

For example:

New-HoloDeckInstance -Version 9.0.2.0 -InstanceID 1 -ManagementOnly

Use the same flags you used in the original deployment.


What Happens After the Patch?

After applying the workaround, Holodeck resumes at the existing deployment state.

In my case, the state engine resumed at:

Install-VcfInstallerBundles

The patched function immediately accepted the 8 returned bundle entries and logged:

Received all Bundle Details

The deployment then moved forward.

Some bundle download calls may return:

BUNDLE_DOWNLOAD_ALREADY_DOWNLOADED

That is expected because the bundles are already present in the depot. The existing try/catch handling allows the phase to complete quickly.

After that, the deployment advanced to the management-domain phase.


Suggested Proper Fix

The quick fix is:

- }elseif($vcf9_bundle_details.count -eq 7){
+ }elseif($vcf9_bundle_details.count -ge 7){

A version-specific fix would also work, for example:

VCF 9.0.0.0 / 9.0.1.0 -> expect 7
VCF 9.0.2.0 -> expect 8

However, that would likely reintroduce the same type of bug in a future VCF BOM revision.

A better long-term approach would be to avoid a hardcoded count completely and validate the actual bundle download state instead.

For example, Holodeck should check that all required bundles for the selected deployment type and version are present and successfully downloaded, instead of assuming that the bundle count is always static.

Still, as an immediate workaround, changing -eq 7 to -ge 7 is enough to unblock the deployment.


Important Notes

This is an unofficial workaround.

The affected PowerShell module is not part of the public Holodeck documentation repository. It is bundled inside the HoloRouter OVA distributed through the Broadcom Support Portal.

Before editing vendor-supplied files, it is always a good idea to make a backup:

cp /root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1 \
/root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1.bak

Then apply the patch.


Summary

This is a good example of a small hardcoded assumption causing a deployment to stall without an obvious fatal error.

The VCF Installer API was returning valid data. The depot was populated. The UI showed the bundles as successfully downloaded. But Holodeck was waiting for an exact number of bundle entries that no longer matched the VCF 9.0.2.0 BOM.

For affected Holodeck 9.0.2 users deploying VCF 9.0.2.0, the key symptom is:

Didn't receive all bundles. Received 8 bundle details. Trying again after 10 seconds

If you see this message, check the bundle count logic in:

SddcMgmtDeployment.psm1

The workaround is small, but it can save a lot of troubleshooting time.


Quick Reference

cp /root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1 \
/root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1.bak

sed -i 's/$vcf9_bundle_details.count -eq 7/$vcf9_bundle_details.count -ge 7/' \
/root/.local/share/powershell/Modules/HoloDeck/Modules/SddcMgmtDeployment.psm1

pkill -9 -f pwsh

Then resume:

Import-HoloDeckConfig -ConfigID <id>
New-HoloDeckInstance -Version 9.0.2.0 -InstanceID <same-as-before> <original flags>

VCF 9.1 Management Services (VCFMS) IP Allocation: Requirements, CIDR, Range and IP List Options

VCF 9.1 Management Services need 12 IPs minimum, 30 recommended. How to allocate them as CIDR, range or IP list in VCF Installer and SDDC Manager.

Short answer: VCF 9.1 Management Services (VCFMS) need a pool of at least 12 IP addresses on the VCF management network, and Broadcom recommends reserving 30 so you have room to scale. You can supply the pool as a CIDR block, a start–end range or a list of individual (even non-contiguous) addresses, and exclude reserved IPs. The UI covers the simple cases. The VCF Installer and SDDC Manager APIs cover the rest, including a custom network from 9.1.1.

What VCF Management Services are and why they need an IP pool

VCF management services are new in VCF 9.1. They bring fleet lifecycle, identity broker, log management, real-time metrics, Salt, SDDC lifecycle, the software depot and telemetry together on one platform. They run as containerized workloads in a VCF services runtime instance. The first VCF Instance hosts the fleet-level services, and every VCF Instance gets its own runtime for local tasks. Each runtime consumes addresses from a pool you define when you deploy or upgrade.

How many IP addresses VCFMS needs

RequirementValue (per Broadcom docs)
Minimum pool12 IP addresses (documented as a /28 block)
Recommended pool30 IP addresses (a /27 block), reserved for new components and scale-out
NetworkVCF management network (9.1.0.x). A custom network via API from 9.1.1
Internal runtime CIDR198.18.0.0/15 by default. Change it to 240.0.0.0/15 or 250.0.0.0/15 if 198.18.0.0/15 is already used in your network

Source: First VCF Instance FQDNs and IP addresses. Plan for 30 from the start. The extra addresses are used later when you add components such as log management or real-time metrics, and growing a pool inside a crowded management VLAN is harder than reserving it up front.

IP allocation formats: CIDR, range, list, exclusions

FormatExampleUse it when
CIDR10.0.10.224/27You have a clean aligned block
Range10.0.10.200 – 10.0.10.229You have a contiguous but unaligned free segment
List10.0.10.21, 10.0.10.37, …The management network is fragmented
ExclusionsexcludedAddressesA block is mostly free but contains a few used IPs

According to the upgrade deployment procedure, the UI accepts all these formats from VCF 9.1.0.400. On earlier 9.1 builds, the UI expects a contiguous range (new installs) or a CIDR (upgrades), and you need the API for anything else.

Where to set it: VCF Installer vs SDDC Manager

  • New deployment (VCF Installer): the pool goes in the vspClusterSpec section of the deployment JSON (ipv4Pool). You can also enter it in the Installer UI.
  • Upgrade to 9.1 (SDDC Manager): VCFMS and the license server are deployed as a separate step. Use the UI, or POST /v1/vcf-management-components with a VcfManagementComponentsSpec if you need non-contiguous IPs, exclusions or a custom network (xRegionNetwork, 9.1.1 and later).

API references: VCF Installer API and SDDC Manager API – vcf-management-components.

Common validation errors

  1. “Not all addresses from the VCF Management Services IPv4 pool are part of the management network”: part of your range or CIDR falls outside the management subnet. Shrink the block, or on 9.1.1+ use the API with a custom network (KB 440223).
  2. In-use IPs found in the pool: something already answers on an address in the pool. Exclude it, or move the pool. Also keep component FQDNs (vCenter, NSX, SDDC Manager, etc.) outside the runtime pool, while still on the management network.
  3. Overlap with 198.18.0.0/15: if your network already uses that range, change the internal runtime CIDR before deployment.

For a small lab, see deploying a minimal VCF 9.0 lab. The same rule applies there: carve out the VCFMS block before you hand out IPs to anything else.

Further reading

VMware Advanced Memory Tiering Tips for Success

VMware Advanced Memory Tiering Tips for Success | This document provides tips for successfully deploying VMware Advanced Memory Tiering with NVMe on VCF 9.0.

VMware Advanced Memory Tiering Tips for Success

Your Practical Guide to Doubling Memory Without Doubling Your Budget | This document provides tips for successfully deploying VMware Advanced Memory Tiering with NVMe on VCF 9.0.


Broadcom Social Media Advocacy

Automating VCF 9.0 Single Sign-On (SSO) with…

Automating VCF 9.0 Single Sign-On (SSO) with OIDC-based Identity Provider – William Lam

Automating VCF 9.0 Single Sign-On (SSO) with…

Configuring VMware Cloud Foundation (VCF) Single Sign-On (SSO), introduced in VCF 9.0, can be quite lengthy, especially when you go through the workflow for the first time. For my lab setup, I use Keycloak, a popular and free OIDC-based IdP, and have documented a step-by-step guide for using it [..]


Broadcom Social Media Advocacy

VCF 9.1 HTTP Offline Depot: Serving the VCF Software Depot over HTTP for VCF Installer and Fleet Depot Service

VCF 9.1 accepts an offline depot over plain HTTP without authentication. Web server layout, supported protocol/auth combinations and how to connect.

Short answer: Starting with VCF 9.1, an offline depot can be served over plain HTTP without authentication, in addition to HTTPS with or without basic authentication. In 9.0 the documented offline depot setup was HTTPS with basic authentication. You still populate the depot with the VCF Download Tool and publish the PROD tree from any web server. The VCF Installer UI in 9.1 only configures authenticated depots, so an unauthenticated HTTP or HTTPS depot is set through the API.

Supported offline depot protocols in VCF 9.0 vs 9.1

ProtocolAuthenticationVCF 9.0.xVCF 9.1How to configure in 9.1
HTTPSBasic authSupported (default)SupportedUI or API
HTTPSNoneNoSupportedAPI
HTTPNoneNoSupportedAPI

The three 9.1 combinations come from the Broadcom doc Set Up an Offline Depot Web Server for VMware Cloud Foundation (9.1). The UI-vs-API split is from William Lam’s testing. Broadcom still recommends HTTPS, so keep plain HTTP to isolated, trusted networks such as air-gapped sites and labs.

Offline depot web server requirements

  • Linux (any distribution, for example Photon OS, RHEL or Ubuntu) or Windows VM with a static IP address. DNS records are recommended but not required.
  • A dedicated disk for depot content; Broadcom recommends at least 1 TB.
  • A dedicated non-root user with read/write access to the depot directory.
  • For HTTPS: TLS 1.2 and 1.3, and a certificate whose SAN includes both the FQDN and IP address of the depot server.

Depot directory layout

The Broadcom Apache example uses /var/www/html as the document root with this structure:

/var/www/html/PROD/COMP          # product binaries
/var/www/html/PROD/metadata      # depot metadata
/var/www/html/PROD/vsan/hcl      # vSAN HCL data
/var/www/html/umds-patch-store   # ESX component data (UMDS)

You do not build this tree by hand. The VCF Download Tool writes binaries and metadata into it when you point --depot-store at the web root. The commands for install, upgrade and ESX downloads are in my VCF 9.1 VCF Download Tool (VCFDT) cheat sheet.

Serving the depot over HTTP with Apache

For an unauthenticated HTTP depot you only need Apache listening on port 80 with read access to the tree. In Broadcom’s HTTPS example, PROD/COMP and PROD/metadata are protected with AuthType Basic, while vsan/hcl and umds-patch-store are always Require all granted. For HTTP without authentication, grant all four:

<Directory /var/www/html/PROD>
  Require all granted
</Directory>
<Directory /var/www/html/umds-patch-store>
  Require all granted
</Directory>

Then apply the permissions from the Broadcom procedure and restart the web server:

chown apache -R /var/www/html/
find /var/www/html -type d -exec chmod 0500 {} \;
find /var/www/html -type f -exec chmod 0400 {} \;
chmod 755 /var/www/
chmod 755 /var/www/html/

Open TCP 80 (or your chosen port) on the host firewall. Before connecting VCF, check from another machine that http://depot.example.local/PROD/metadata/ returns content.

Connecting VCF Installer to the HTTP offline depot

In the VCF Installer UI (Depot Settings and Binary Management > Offline Depot > Configure) you enter the depot URL and credentials, as described in Connect VCF Installer to Broadcom or an Offline Depot. For a depot without authentication, use the VCF Installer API instead:

  1. Get a token from POST /v1/tokens.
  2. Send PUT /v1/system/settings/depot with a depotConfiguration that sets isOfflineDepot to true and uses your http:// depot URL, with no offlineAccount.
  3. Check the result with GET /v1/system/settings/depot, then sync metadata and download binaries as usual.

William Lam’s post has a working PowerShell example for both the VCF Installer and the fleet depot service (/depot-service/api/depot/v1/connectivity with depotType: OFFLINE). A fleet deployed from an installer that used an HTTP depot inherits that configuration. The API reference is on the Broadcom developer portal: Depot Settings APIs.

HTTPS depot: trusting the certificate

If you stay on HTTPS with a private CA, VCF Installer must trust the depot certificate before you configure it. The Broadcom procedure, run as root over SSH, is:

openssl s_client -connect depot_server_FQDN:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/server.crt
keytool -import -trustcacerts -file /tmp/server.crt -keystore /etc/alternatives/jre/lib/security/cacerts -alias offline_depot_server -storepass changeit -noprompt
echo 'y' | /opt/vmware/vcf/operationsmanager/scripts/cli/sddcmanager_restart_services.sh

Skipping this step, or using a certificate without the IP address in the SAN, will break the offline depot connection. HTTP avoids certificate handling entirely, which is the main practical benefit of the 9.1 change for labs and isolated sites.

Further reading

#115 – GPU resource management for AI workloads…

#115 – GPU resource management for AI workloads with Frank Denneman!

#115 – GPU resource management for AI workloads…

Recently, Frank published a series of blog posts on GPU resource management. I invited Frank to the show to explain why GPU resource management is different than CPU and memory management in vSphere. Frank goes over all the intricate details, and as always, dives deep into the various […]


Broadcom Social Media Advocacy

Inside VCF 9.1: Platform, Lifecycle, and What’s…

Inside VCF 9.1: Platform, Lifecycle, and What’s Different Now | VMware Cloud Foundation 9.1 introduces a wide range of improvements across the platform, and in this episode, Pete and John sit down with William Lam to walk through the updates that matter most to practitioners.

Inside VCF 9.1: Platform, Lifecycle, and What’s…

VMware Cloud Foundation 9.1 introduces a wide range of improvements across the platform, and in this episode, Pete and John sit down with William Lam to walk through the updates that matter most to practitioners. From zero-touch provisioning and faster patching to fleet management, real-time […]


Broadcom Social Media Advocacy