Nested ESX continues to be a popular way to explore and learn about VMware Cloud Foundation (VCF), it is also the basis for the VCF Holodeck solution.
With the release of VCF 9.1, Nested ESXi VMs can now run on physical hosts with NVMe Tiering enabled, no workarounds required. In addition, you can extend the benefits of NVMe Tiering to a Nested ESX VM by applying the following VM Advanced Setting.
The easiest and quickest way to deploy a Nested ESX VM is to my Nested ESX Virtual Appliance, which has been refreshed for 9.1!
Note: The latest Nested ESX 9.1 Virtual Appliance no longer comes with default password, you will need to specify that as part of the OVF deployment.
While I have personally switched from using a nested VCF deployments to physical setup, mainly due to lack of resources, I know many of you do have sufficient capacity to run a full VCF deployment in a Nested environment.
I have also refreshed my VMware Cloud Foundation Nested Lab (VCF) Fleet Deployment script to support both VCF and VVF 9.1

Here is a screenshot of the initial deployment that takes ~25 minutes to deploy three Nested ESX VM, initialize the VCF Installer, sync from a VCF Offline Depot, generate the deployment JSON and then automatically start the VCF Fleet deployment. š

I keep getting a "Something went wrong. Please try again later!" in the lower left when trying to download 9.1 -- or anything that is not 9.0
Nevermind. Using the link in this article worked fine. But using the previous link on previous articles and selecting 9.1 doesn't work for whatever reason.
Dear William
Broadcom changed download token. I need to provide UUID first.
Then I can get token or key.
Dear William, running the powershell from a Win machine but cant get the script to see the full path to the ova's. I'm using $NestedESXiApplianceOVA = "E:\VMWare\VCF 9.1.0\Nested_ESXi9.1.0.0_Appliance_Template_v1.0.ova" but its throwing an error:
PS E:\VMWare\VCF 9.1.0> .\vcf-automated-fleet-deployment.ps1 -EnvConfigFile .\chillyconfig-vcf-9.1.0
InvalidOperation: E:\VMWare\VCF 9.1.0\vcf-automated-fleet-deployment.ps1:22
Line |
22 | ⦠gementDomainJSONFile = "$(${VCFInstallerProductSKU}.toLower())-mgmt-$ ā¦
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| You cannot call a method on a null-valued expression.
Test-Path: E:\VMWare\VCF 9.1.0\vcf-automated-fleet-deployment.ps1:378
Line |
378 | if(!(Test-Path $NestedESXiApplianceOVA)) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Value cannot be null. (Parameter 'The provided Path argument was null or an empty collection.')
Unable to find ...
I've tried fwd\backslash and to no effect. What am i doing wrong???
Ignore my last; the config wasn't saved as a ps1.
Great Guide. Just ran into small issue that script did not fail properly at the beginning due to not having set "Set-PowerCLIConfiguration -InvalidCertificateAction Ignore" It just continues to wait for the ova deployment although it never started.
Found a small bug: The script is not taking the customized domain name as the vcf.lcm is hardcoded value in line 770 "$VMName = "$($_.Key).vcf.lcm"" switched this to "$VMName = "$($_.Key)." + $VMDomain" and now it started using the customized domain name.
Apperciate the catch Ian! I've just fixed and pushed the update
For whatever reason the Deployment did not deploy the Ops-Logs, although the debug-log showed the config in the json handed over to the VCF Installer. After installation the download of the json is missing the ops-logs section. Not sure if you have seen same.
I also added for my need the user/password for the offline repo (the two variables must then be also added to the sample script:
if($VCFInstallerSoftwareDepot -eq "offline") {
$payload = @{
"offlineAccount"= @{
"username"= $VCFInstallerDepotUser
"password"= $VCFInstallerDepotPass
}
"depotConfiguration" = @{
"isOfflineDepot" = $true
"url" = $VCFInstallerDepotUrl
}
}
Log Management (formally VCF Operations for Logs) is a Day-N activity, you'll need to deploy via Ops UI once your VCF Fleet is up and running by going to Build->Lifecycle->VCF Management and Add Component