I recently came to learn about a really neat solution that was released called the VMware Cloud Foundation Lab Constructor (VLC) Holodeck Toolkit, which makes it super easy for anyone to deploy a complete functional VCF environment, fully self-contained and deploys all the required networking and infrastructure services that dramatically reduces the amount of time and effort to deploy a VCF environment for evaluation or learning purposes.
What is unique about the VLC Holodeck Toolkit is that it ships with a special vPodRouter VM, which provides all the networking and connectivity that is required to deploy a typical production VCF environment. If this sounds familiar, this is exactly how VMware Hands-On-Labs (HOL) works where isolated networking is provided to each "vPod" through their vPodRouter VM. In addition, the VLC Holodeck Toolkit also builds a custom Windows Jumphost (bastion) ISO that includes all the infrastructure services like DNS, Directory, Certificate Authority, etc. that is fully configured and ready to use once it is deployed and this is how users interact with the VCF environment.
With the VLC Holodeck Toolkit providing and building all the necessary "virtual" infrastructure, the barrier to entry is further reduced and customers can easily stand up a fully functional VCF environment running on just a single ESXi host without any special physical networking requirements. For a detailed overview of the solution, check out overview video below.
After learning about the solution, I also had the opportunity to kick the tires and provide some early feedback, which included a few additional optimizations that made its way back into the toolkit. For those interested, below is the high level workflow to go from a single ESXi host with minimal configuration to a fully functional VCF environment.
Step 0 - Download VLC Holodeck Toolkit from HERE (TBD on new URL). Since you will be deploying a complete VCF environment, you will need to ensure you have sufficient resources whether you are deploying a single or multi-VCF environment.
Step 1 - In addition to providing a Windows Server 2019 Desktop Experience ISO, you will need to download various packages that will then be used to create a custom Windows ISO image, that will automatically boot and self-install and configure the OS and infrastructure services. You will also need VCF license keys for vCenter, ESXi, vSAN and NSX which will need to be added to the createISO.ps1 file before you can proceed. The ISO creation process was super easy and once you have all the required files, the process was pretty quick and it took me ~4min but should not take longer than 10min. The detailed step by step instruction for this section can be found HERE.
Step 2 - Prepare the physical ESXi host, which includes doing a vanilla ESXi installation and then configuring a couple of Virtual Standard Switch (VSS). As of writing this blog post, ESXi 8.x will be supported when VLC Holodeck Toolkit 1.3 is released, which should hopefully be at the end of this week. The detailed step by step instruction for this section can be found HERE.
Step 3 - Upload the generated ISO from Step 1 to the ESXi host that then create the Holo-A-Console VM using Windows Server 2019 (using all the defaults), but make sure to change the network adapter to VMXNET3 or you will run into issues later. Power on the VM and rest is handled by the ISO image which will automatically install the OS and configure the system which should take a few hours, so you can move onto Step 4 while waiting. The step by step instruction for this section can be found HERE.
Step 4 - Deploy the vPodRouter OVA which we will name Holo-A-Router and simply connect eth0 to "VM Network" which should support DHCP and provide you with an IP Address which you will use to connect to the Holo-A-Console VM. Power on the VM and no additional configurations are needed. The detailed step by step instruction for this section can be found HERE.
Step 5 - Once the Holo-A-Console VM installation has completed, you can RDP into the VM using the IP Address acquired from your Holo-A-Router VM on eth0 interface and using the credentials outlined in the documentation. At this point, we are now ready to launch either the VLC UI or CLI utility and everything that is required to deploy VCF is already stored in a pre-defined JSON configuration file that is located on the Holo-A-Console VM. There is no additional user input or configuration required, which is ultimately what makes this an easy and repeatable process for deploying a VCF environment. Once you have completed the wizard, click on Construct and in a few hours, a fully functional VCF environment will be ready! The detailed step by step instruction for this section can be found HERE
Using the pre-defined VCF template, we can see that VLC Holodeck Toolkit deploys a number of Nested ESXi VM including VMware Cloud Builder which is then used to install VCF.
Once the VCF deployment has been completed, you will be able to login to the vCenter Server within the VCF Management Domain and see the following:
If we login to SDDC Manager, we can see our VCF Management Domain hosts along with 3 additional ESXi hosts that have not been configured and these hosts can then be used to setup a VCF Workload Domain, which is another workflow detailed HERE.
The simplicity and repeatability is what I most appreciate about this solution. If you make a mistake, you can easily blow away the deployed VMs and simply start over without much effort ... I should know as I ran into a few issues myself to PEBCAK and this is especially important for those just getting started and can easily feel overwhelm when something goes wrong and you have no idea where to start troubleshooting. With a solution like VLC Holodeck Toolkit, it quickly gives you a VCF environment where you can start focusing on the interesting part which is learning and exercising the benefits of VCF.
Looks like it is time for me to get some new hardware...
@William, do you know if you can get NFR licenses for VCF?
I know I can get eval licenses through VMUG advantage, but would like to spin this up in my work lab.
I don’t. Best to work w/your account team
some idea?
Update SDDC Manager with Licensing Information
11:10:02 AM
11:10:06 AM
Failed
A problem has occurred on the server. Please retry or contact the service provider and provide the reference token. A problem has occurred on the server. Please retry or contact the service provider and provide the reference token. A problem has occurred on the server. Please retry or contact the service provider and provide the reference token. A problem has occurred on the server. Please retry or contact the service provider and provide the reference token.
10:52:32 :> Bringup current task:
10:53:25 :> Bringup current task: Generate SDDC Manager Configuration Input Data
10:53:56 :> Failure detected on this task: , retrying.
10:53:57 :> Bringup current task:
10:54:49 :> Bringup current task: Generate SDDC Manager Configuration Input Data
10:57:21 :> Bringup current task:
10:58:46 :> Bringup current task: Generate SDDC Manager Configuration Input Data
10:59:19 :> Failure detected on this task: , retrying.
10:59:20 :> Bringup current task:
11:00:12 :> Bringup current task: Generate SDDC Manager Configuration Input Data
11:00:46 :> Failure detected on this task: , retrying.
11:00:47 :> Bringup current task:
11:01:39 :> Bringup current task: Generate SDDC Manager Configuration Input Data
11:02:11 :> Failed Bringup on this task: Generate SDDC Manager Configuration Input Data after 5 retries.
11:02:11 :> See the log on CloudBuilder for more information
11:02:11 :> SSH or console to 10.0.0.221 username admin, password VMware123!
11:02:11 :> Log is located at /var/log/vmware/vcf/bringup/vcf-bringup-debug.log
2023-04-04T11:10:04.790+0000 [bringup,d95c3834a0206614,d81c] DEBUG [c.v.e.s.o.c.ProcessingTaskSubscriber,pool-3-thread-1] Collected the following errors for task with name PostSddcLicenseInventoryAction and ID 7f000001-874b-13cc-8187-4b9f4f2d0117: [ExecutionError [errorC
ode=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)], ExecutionError [errorCode=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)], ExecutionError [errorCo
de=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)]]
2023-04-04T11:10:04.852+0000 [bringup,d95c3834a0206614,823a] DEBUG [c.v.e.s.o.c.ProcessingTaskSubscriber,pool-3-thread-2] Invoking task PostSddcLicenseInventoryAction.UNDO Description: Update SDDC Manager with Licensing Information, Plugin: SddcManagerContractPlugin, Par
amBuilder null, Input map: {subscriptionLicensing=UpdateSddcManagerWithLicensingInfo____19__subscriptionLicensing, licensingInventory=UpdateSddcManagerWithLicensingInfo____19__licensingInventory, sddcManagerBasicAuth=UpdateSddcManagerWithLicensingInfo____19__sddcManagerB
asicAuth, sddcManagerPublicApi=UpdateSddcManagerWithLicensingInfo____19__sddcManagerPublicApi, domainId=UpdateSddcManagerWithLicensingInfo____19__domainId}, Id: 7f000001-874b-13cc-8187-4b9f4f2d0116 ...
2023-04-04T11:10:04.932+0000 [bringup,d95c3834a0206614,823a] DEBUG [c.v.e.s.o.c.c.ContractParamBuilder,pool-3-thread-2] Contract task Update SDDC Manager with Licensing Information input: {"sddcManagerBasicAuth":{"address":"sddc-manager.vcf.sddc.lab","port":0,"username":
"admin","password":"*****"},"licensingInventory":"{\"licenseKeys\":[{\"productType\":\"VCENTER\",\"key\":\"*****\",\"productVersion\":\"7.0.3.01000-20395099\",\"description\":\"VMware vCenter Server License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"
licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"DefaultVersion\",\"description\":\"VMware vSAN License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\
"*****\",\"productVersion\":\"3.2.1.2.0-20541212\",\"description\":\"VMware NSX-T Data Center License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353
\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKey
Type\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseU
nit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"}]}","sddcManagerPublicApi":{"address":"sdd
c-manager.vcf.sddc.lab","port":0,"username":"*protected email*","password":"*****"},"domainId":"fd000297-12e0-47f1-935e-2ef12da9b90e","subscriptionLicensing":false}
2023-04-04T11:10:04.933+0000 [bringup,d95c3834a0206614,823a] DEBUG [c.v.e.s.o.c.ProcessingTaskSubscriber,pool-3-thread-2] Collected the following errors for task with name PostSddcLicenseInventoryAction and ID 7f000001-874b-13cc-8187-4b9f4f2d0117: [ExecutionError [errorC
ode=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)], ExecutionError [errorCode=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)], ExecutionError [errorCo
de=null, errorResponse=LocalizableErrorResponse(messageBundle=com.vmware.evo.sddc.common.core.error.messages)]]
2023-04-04T11:10:05.022+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.e.s.o.c.ProcessingTaskSubscriber,pool-3-thread-10] Invoking task PostSddcLicenseInventoryAction. Description: Update SDDC Manager with Licensing Information, Plugin: SddcManagerContractPlugin, ParamB
uilder null, Input map: {subscriptionLicensing=UpdateSddcManagerWithLicensingInfo____19__subscriptionLicensing, licensingInventory=UpdateSddcManagerWithLicensingInfo____19__licensingInventory, sddcManagerBasicAuth=UpdateSddcManagerWithLicensingInfo____19__sddcManagerBasi
cAuth, sddcManagerPublicApi=UpdateSddcManagerWithLicensingInfo____19__sddcManagerPublicApi, domainId=UpdateSddcManagerWithLicensingInfo____19__domainId}, Id: 7f000001-874b-13cc-8187-4b9f4f2d0116 ...
2023-04-04T11:10:05.088+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.e.s.o.c.c.ContractParamBuilder,pool-3-thread-10] Contract task Update SDDC Manager with Licensing Information input: {"sddcManagerBasicAuth":{"address":"sddc-manager.vcf.sddc.lab","port":0,"username"
:"admin","password":"*****"},"licensingInventory":"{\"licenseKeys\":[{\"productType\":\"VCENTER\",\"key\":\"*****\",\"productVersion\":\"7.0.3.01000-20395099\",\"description\":\"VMware vCenter Server License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\
"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"DefaultVersion\",\"description\":\"VMware vSAN License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":
\"*****\",\"productVersion\":\"3.2.1.2.0-20541212\",\"description\":\"VMware NSX-T Data Center License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-2032835
3\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKe
yType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"license
Unit\":\"*****\"},{\"productType\":\"*****\",\"key\":\"*****\",\"productVersion\":\"7.0.3-20328353\",\"description\":\"VMware vSphere License\",\"licenseKeyType\":\"*****\",\"licenseKeyStatus\":\"*****\",\"licenseUnit\":\"*****\"}]}","sddcManagerPublicApi":{"address":"sd
dc-manager.vcf.sddc.lab","port":0,"username":"*protected email*","password":"*****"},"domainId":"fd000297-12e0-47f1-935e-2ef12da9b90e","subscriptionLicensing":false}
2023-04-04T11:10:05.088+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.e.s.s.PostSddcLicenseInventoryAction,pool-3-thread-10] Progress message added: Populate license inventory in SDDC Manager sddc-manager.vcf.sddc.lab
2023-04-04T11:10:05.089+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.v.s.h.VcfRestTemplateHttpClient,pool-3-thread-10] Http request connect timeout milliseconds 180000
2023-04-04T11:10:05.089+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.v.s.h.VcfRestTemplateHttpClient,pool-3-thread-10] Http request read timeout milliseconds 180000
2023-04-04T11:10:05.089+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.v.secure.config.LocalFipsChecker,pool-3-thread-10] Fips status file "/proc/sys/crypto/fips_enabled" content: 0, FIPS mode enabled: false
2023-04-04T11:10:05.096+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.v.s.t.DynamicTrustManager,pool-3-thread-10] Checking validity of certificate chain CN=sddc-manager.vcf.sddc.lab, OU=VMware Engineering, O=VMware, L=Palo Alto, ST=California, C=US,OU=VMware Engineerin
g, O=vcenter-mgmt.vcf.sddc.lab, ST=California, C=US, DC=local, DC=vsphere, CN=CA
2023-04-04T11:10:05.096+0000 [bringup,d95c3834a0206614,113d] DEBUG [c.v.v.s.t.DynamicTrustManager,pool-3-thread-10] Certificate chain CN=sddc-manager.vcf.sddc.lab, OU=VMware Engineering, O=VMware, L=Palo Alto, ST=California, C=US,OU=VMware Engineering, O=vcenter-mgmt.vcf
.sddc.lab, ST=California, C=US, DC=local, DC=vsphere, CN=CA is valid
2023-04-04T11:10:05.127+0000 [bringup,d95c3834a0206614,113d] ERROR [c.v.e.s.o.model.error.ErrorFactory,pool-3-thread-10] [40OK3P] VCF_ERROR_INTERNAL_SERVER_ERROR Invocation of prefix '' part of task PostSddcLicenseInventoryAction in plugin SddcManagerContractPlugin faile
d with exception.
com.vmware.evo.sddc.common.core.error.InternalServerErrorException: Invocation of prefix '' part of task PostSddcLicenseInventoryAction in plugin SddcManagerContractPlugin failed with exception.
at com.vmware.evo.sddc.orchestrator.core.ProcessingTaskSubscriber.invokeMethod(ProcessingTaskSubscriber.java:447)
at com.vmware.evo.sddc.orchestrator.core.ProcessingTaskSubscriber.processTask(ProcessingTaskSubscriber.java:520)
at com.vmware.evo.sddc.orchestrator.core.ProcessingTaskSubscriber.accept(ProcessingTaskSubscriber.java:124)
at jdk.internal.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.google.common.eventbus.Subscriber.invokeSubscriberMethod(Subscriber.java:88)
at com.google.common.eventbus.Subscriber$1.run(Subscriber.java:73)
at org.springframework.cloud.sleuth.instrument.async.TraceRunnable.run(TraceRunnable.java:68)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : "{"errorCode":"INVALID_LICENSE_KEY","arguments":[],"message":"Invalid licensekey","remediationMessage":"1. Make sure you use correct license key.","referenceToken":"6P96BF"}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:101)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
:
answer to my self:
A license was inavil, but its strange because if you use the license alone in nsx work.
Thx
I encountered the same license error while deploying NSX-T, and I would Specifically, I am unsure how to proceed with the license activation process manually to continue the bring-up process. Can you please provide me with guidance on how you added the license and proceeded with the bring-up process?
Thank you.
Do you know whether it is possible to *upgrade* an existing VCF 4.5 to VCF 5.0? This would IMHO be the best showcase for VCF, the guided upgrade part!
Running into an issue where iso creation goes fine but when deploying I get an error about unable to read productkey from unattend.xml. I've checked, its in there, and I've deployed numerous times. Any ideas? Thanks!
Checking to see if you know whether or not this was pulled since the registration link and a few others no longer work? Perhaps there is a newer version? Google provided some links but returns us to a general Broadcom page.
https://www.vmware.com/resources/resource-center?product_family%5B%5D=Cloud%20Infrastructure
Thank you, William. Any information you have is always helpful!
TechZone has gone away, which is where Holodeck content is hosted. It’s being worked on to be re-hosted, stay tuned for updates and its new home
Thank you, Sir! In the meantime, I spoke with my TAM and he is working on some hands-on labs that we can utilize. Please do keep us informed. WE appreciate you!