VCF Lab Constructor (aka VLC) is a great PowerShell tool created by Ben Sier and Heath Johnson working at VMware in the Technical Marketing team.
It’s the easiest way to essentially deploy a Cloud Foundation nested environment, without having to manually install ESXi, Cloud Builder as well as doing lots of validation on your own.
Getting Access
You can get access to VLC by filling the registration form at
tiny.cc/getVLC
You can also join the Slack VLC Support community at http://tiny.cc/getVLCSlack
PLEASE NOTE: in order to deploy VCF you need authorisation to download Cloud Builder as well as have the ESXi, vCenter, NSX and vSAN licenses.Now If you’re a #vExpert you will have access to those but VCF isn’t included so you’ll have to find another way to source the VCF binaries. You have been warned.
Goes without saying that this tool is not supported by VMware but it’s great for labs, demo and test environment.
*** UPDATE 30/10/2019 ***
Thanks to Heath Johnson for making me aware that the Cloud Builder VM is actually available to vExperts, via the dedicated download section
https://vexpert.vmware.com/my/downloads
Overview
The main script is VLCGui.ps1 which comes with a GUI where you can input all the main parameters
Now my goal here is not to write a step by step guide from scratch because VLC comes with an Installation Guide which is very exhaustive. What I will say though is: make sure you carefully read it before you try to deploy VCF! There are few preparation steps required else the deployment will fail.
At a very high level, the VLCGui.ps1 consumes JSON files for both the initial bring-up as well as to deploy extra hosts. You can customise the deployment to your liking by editing these json files but I’d recommend leave them as they are for your very first deployment so you get to understand how the environment gets built and what goes where.
Example of 3 nodes “expansion pack” JSON
{
"genVM": [
{
"name": "esxi05",
"cpus": 4,
"mem": 16,
"disks": "10,10,50,50,50",
"mgmtip": "192.168.110.33",
"subnetmask":"255.255.255.0",
"ipgw":"192.168.110.254"
},
{
"name": "esxi06",
"cpus": 4,
"mem": 16,
"disks": "10,10,50,50,50",
"mgmtip": "192.168.110.34",
"subnetmask":"255.255.255.0",
"ipgw":"192.168.110.254"
},
{
"name": "esxi07",
"cpus": 4,
"mem": 16,
"disks": "10,10,50,50,50",
"mgmtip": "192.168.110.35",
"subnetmask":"255.255.255.0",
"ipgw":"192.168.110.254"
}
]
}
What physical resources do you need?
To emulate a minimal 4 nodes VCF management workload domain you are looking at 4 ESXi VMs with the following virtual hardware:
- esxi01 – 64GB RAM, 16GB boot + 3x175GB capacity + 1x10GB cache
- esxi02 – 64GB RAM, 16GB boot + 3x150GB capacity + 1x10GB cache
- esxi03 – 64GB RAM, 16GB boot + 3x150GB capacity + 1x10GB cache
- esxi04 – 32GB RAM, 16GB boot + 3x50GB capacity + 1x10GB cache
These specs are defined inside default_mgmt_hosthw.json and I think you’d struggle to shrink them any further but hey, if you do and succeed let me know đŸ™‚
{
"genVM": [
{
"name": "host1",
"cpus": 8,
"mem": 64,
"disks": "16,10,175,175,175"
},
{
"name": "host2",
"cpus": 8,
"mem": 64,
"disks": "16,10,150,150,150"
},
{
"name": "host3",
"cpus": 8,
"mem": 64,
"disks": "16,10,150,150,150"
},
{
"name": "host4",
"cpus": 8,
"mem": 32,
"disks": "16,10,50,50,50"
}
]
}
The “minimal deployment” for the management Workload Domain (WLD) consist of:
- 2 Platform Services Controllers
- 1 vCenter
- 1 NSX Manager
- 1 SDDC Manager
- 3 NSX Controllers
- 3 vRealize Log Insight nodes (1 master, 2 workers)
This is what the resource utilisation looks like
I’m deploying everything in a single host with SSDs fully loaded with RAM so I can get a reasonable deployment time (~2h 35m). If you have spindles HDD and are low on ram your mileage may vary considerably. On this topic, make sure you have TPS with salting enabled see https://kb.vmware.com/s/article/2097593 for details. The two advanced setting you need for this are:
Mem.ShareForceSalting = 0
Mem.AllocationGuestLargePage = 0
The amount of RAM shared (and saved) in my lab is stunning, look at this:
When it comes to DNS you have two options:
- Bring your own DNS which means configure your sub zone and records accordingly
- Use MaraDNS running inside the Cloud Builder VM
I’d like to emulate a real customer setup so I’m using my own AD domain and DNS. This is what my DNS records look like for the first VCF site:
The deployment
Once you have sorted all your requirements you are ready to kick off the deployment. VLC will start by deploying your virtual ESXi hosts, followed by the Cloud Builder VM
Note: you can only access CB via IP not DNS
Once Cloud Builder (CB) is ready, the bring-up process will kick-off
From that moment VLCGui.ps1 will only monitor the bring-up tasks since CB have full control of the deployment.
You will see the task currently running from your PS session and in the end your total execution time. Technically at this state you could also kill the PS session and nothing will break; the logs are nicely stored under the Logs folder.
Also, in order to access the bring-up running process from the CB web interface you must upload a bogus JSON file for validation (use the json file used for bring-up) immediately cancel it and re-point your URL to https://<CB-IP>/bringup-result
After some hours (your mileage may vary) you will have your nice SDDC VCF environment up and running.
8 Trackbacks