Several weeks back I had shared a solution in which you can install a hardware mock VIB for Nested ESXi when using vSAN Express Storage Architecture (ESA) and VMware Cloud Foundation (VCF) to work around the vSAN ESA certified disks pre-check validations.
While the majority of my testing uses Nested ESXi, I have recently been deploying a physical VCF environment and I due to the limited number of NVMe devices, I wanted to use vSAN ESA for the VCF Management Domain but of course I would run into the same vSAN ESA certified disks pre-check validations, which would prevent the installer from proceeding.
I was hoping that I could also use the mocking method to allow my physical deployment but after some trial and error, I ran into inconsistent behaviors and after speaking with Engineering, I came to learn that the existing solution would also apply to a physical ESXi deployment as the physical storage controllers are made hidden by the mocking method and as long as you have vSAN ESA capable NVMe devices, it should allow vSAN ESA HCL pre-check to pass and continue with the installation!
I quickly reinstalled latest ESXi 8.0 Update 3b on one of my physical kits along with the vSAN ESA Hardware Mock VIB and then using the latest VCF 5.2.1 Cloud Builder, I was able to successfully pass the vSAN ESA pre-checks and the deployment started without any issues! 🥳
Great to know this solution now works for both physical and nested ESXi for use with VCF, especially for proof-of-concepts!
Note: The Cloud Builder UI still performs a pre-check on the physical network adaptors to ensure that they are 10GbE or faster, so while you will pass the vSAN ESA HCL pre-check, it will still fail when using the UI. The workaround is to deploy your VCF Management Domain by using the Cloud Builder API, which turns the 10GbE pre-check into a warning, rather than an error which would allow you to proceed with the deployment. You can use this quick PowerShell snippet for calling into the Cloud Builder API and then you can use the Cloud Builder UI to monitor the progress of your deployment.
$cloudBuilderIP = "192.168.30.190" $cloudBuilderUser = "admin" $cloudBuilderPass = "VMware123!" $mgmtDomainJson = "vcf50-management-domain-example.json" #### DO NOT EDIT BEYOND HERE #### $inputJson = Get-Content -Raw $mgmtDomainJson $pwd = ConvertTo-SecureString $cloudBuilderPass -AsPlainText -Force $cred = New-Object Management.Automation.PSCredential ($cloudBuilderUser,$pwd) $bringupAPIParms = @{ Uri = "https://${cloudBuilderIP}/v1/sddcs" Method = 'POST' Body = $inputJson ContentType = 'application/json' Credential = $cred } $bringupAPIReturn = Invoke-RestMethod @bringupAPIParms -SkipCertificateCheck Write-Host "Open browser to the VMware Cloud Builder UI to monitor deployment progress ..."
Thanks for the comment!