Building nested VCF using VCF Lab Constructor (VLC)

VLC-Featured-Image
VLC screenshot

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

vExpert Download Area

Overview

The main script is VLCGui.ps1 which comes with a GUI where you can input all the main parameters

VLC GUI Startup
VLC Gui – Expert Mode Filled In

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
PS code to get advanced host settings

The amount of RAM shared (and saved) in my lab is stunning, look at this:

 When it comes to DNS you have two options:

  1. Bring your own DNS which means configure your sub zone and records accordingly 
  2. 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:

DNS Host Records VCF Site 1

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.

VLC polling Cloud Builder Bring-up Tasks

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.

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

8 Trackbacks

  1. VMware Cloud Foundation Offline Bundle Download (3.x) | blog.bertello.org (Pingback)
  2. My first deploy with VMware Cloud Foundation - vConsultants blog (Pingback)
  3. VMware Cloud Foundation – Part 1: Deploying management domain with VLC – MasterWayZ | Michael Goossens | Blog (Pingback)
  4. Introducing PowerVCF | blog.bertello.org (Pingback)
  5. VMware SDDC VCF LCM Upgrade to 4.3.0 | blog.bertello.org (Pingback)