<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Training on The Nested Lab</title>
    <link>https://thenestedlab.com/tags/training/</link>
    <description>Recent content in Training on The Nested Lab</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Wed, 04 Nov 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://thenestedlab.com/tags/training/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introducing Lab Builder for VCF</title>
      <link>https://thenestedlab.com/posts/introducing-lab-builder-for-vcf/</link>
      <pubDate>Wed, 04 Nov 2026 00:00:00 +0000</pubDate>
      <guid>https://thenestedlab.com/posts/introducing-lab-builder-for-vcf/</guid>
      <description>Why we built Lab Builder for VCF: a classroom needs a complete VCF stack per student, and hand-building them does not scale. One site file, a catalog of nested labs, and a kit that installs with no internet at all. Version 1.0 is out.</description>
      <content:encoded><![CDATA[<p>Teaching VCF properly means letting people break it. Not a shared sandbox with a
rota and a sign-up sheet, but a stack of their own: a vCenter they can
misconfigure, a vSAN they can fill, an NSX they can lock themselves out of.
Reading about a distributed switch is not the same as moving a host onto one and
watching the ping stop.</p>
<p>The trouble is supply. Every student needs a stack of their own. In the classroom this
example builds, each one is a domain controller, a jump host, a set of ESXi hosts, a
vCenter, a vSAN cluster, VCF Operations and NSX. Build those by hand and you have spent days of an engineer&rsquo;s
time before anyone has learned anything.</p>
<p>We have been building nested labs on VCF Automation for a while, and writing
about the parts as we went. This post introduces the thing those parts became.
<strong>Lab Builder for VCF</strong> reached 1.0 today.</p>
<h2 id="the-problem-with-a-lab-per-student">The problem with a lab per student</h2>
<p>Nested labs are not new, and neither is scripting them. What gets awkward is
everything around the lab.</p>
<p>A student needs somewhere to put it, which means an organization, a project and
a network. They need to reach it without reaching anyone else&rsquo;s. The lab needs
images, installers and depots. At most of the sites we work at, there is no
internet to fetch them from. Someone has to decide who may request what. A
trainer has to hand out a class without raising a ticket.</p>
<p>Script the build and you have solved the smallest part of it. The lab exists.
The classroom does not.</p>
<h2 id="what-lab-builder-is">What Lab Builder is</h2>
<p>Lab Builder builds the classroom. One file describes the site: its VCF
Automation organization, its projects, the network plan for a lab, which VCF
media it uses, who the students are and what the trainers may do. Everything
else is generated from that file.</p>
<p>That includes the things you would expect, like the blueprints and the request
forms. It also includes the things people usually write twice and then forget to keep
in step. The implementation guide, the trainer&rsquo;s runbook, the student&rsquo;s runbook
with a screenshot at nearly every step, and the diagrams inside all of them. Change the
site file and the documents change with it.</p>
<p>The catalog it builds is a set of phases, and a lab can be handed out at any of
them. A class with only an afternoon starts with the hosts already installed. A
class with a week starts from a blank server and builds the lot.</p>
<ul>
<li>A student requests a lab from the catalog and gets their own.</li>
<li>A build-it-yourself shell - their jump host, a plain Windows server and the blank
hosts - is ready about five minutes after they ask for it.</li>
<li>A complete lab in this example, with the vCenter, vSAN, VCF Operations, NSX and a
three-tier application to put a policy around, took about an hour and a half
unattended at the site where we measured it.</li>
<li>When they are finished, it is disposed of in under five minutes.</li>
</ul>
<p>Nobody files a request for a VLAN. Nobody waits for an engineer. The engineer,
reader, gets to do something else.</p>
<h2 id="one-lab-per-student-properly-separated">One lab per student, properly separated</h2>
<p>Each student works inside their own NSX VPC, with each lab in a namespace of its
own. Access comes from the site&rsquo;s own directory, so trainers hold the rights to
release phases and students can only manage what is theirs.</p>
<p>The way in is a Remote Desktop session to that student&rsquo;s own jump host. At a
site running vDefend, everything else is turned away at the Transit Gateway
firewall. A student who goes looking for a neighbour&rsquo;s vCenter finds a closed
door rather than a lesson in someone else&rsquo;s homework.</p>
<h2 id="a-class-as-it-runs">A class, as it runs</h2>
<p>The trainer&rsquo;s page is the class at a glance: one row per student network, what that
student has built, how old it is and the Remote Desktop address to hand them. It is
all read from the platform, and nothing changes until a trainer says so.</p>
<p><img alt="Lab Builder&rsquo;s Class overview: a table with one row per student network, each showing its lab name, the phase and size requested, a status such as Create Successful or Create In Progress, the age of the lab and its Remote Desktop address, with free networks offering a Request a lab button" loading="lazy" src="/images/lab-builder-class.jpg">
<em>A class in flight, with example values. Two rows want attention: one lab is past its usual build time, one request failed and the page says what to do about it.</em></p>
<p>How many labs run at once is a hardware question rather than a product one. The same
page works that out: free memory on each host, vSAN headroom, addresses left in the IP
block, the organization&rsquo;s quota, and from those how many more labs of each shape still
fit. Add hosts and the numbers go up; there is nothing in the product that counts
students.</p>
<p><img alt="The Capacity panel listing vSAN usage, free memory per host, the VCF Automation nodes, the IP block and the organization quota, beside an Another lab? table saying how many more labs of each phase and size would fit and what decides it" loading="lazy" src="/images/lab-builder-capacity.jpg">
<em>Further down the same page: what the hardware has left, and how many more labs fit at each size. Here it is the memory quota that decides.</em></p>
<h2 id="it-installs-where-there-is-no-internet">It installs where there is no internet</h2>
<p>Most of the sites we build these labs at are air gapped. That shaped the whole
product rather than being bolted on at the end.</p>
<p>The kit is one zip. It carries its own Python 3.14.8 and PowerShell 7.6.7, so
nothing is installed on the workstation and nothing is downloaded during an
install. There is a full zip at 159.2 MB and a smaller core zip at 53.2 MB for
machines that already have PowerShell 7. The VCF media sits beside the kit, not
inside it, with a checklist saying exactly what goes where.</p>
<p>The build is reproducible: we build both zips twice, in different folders under
different names, and compare them byte for byte. If they differ, the release
does not go out.</p>
<h2 id="org-builder-is-inside-it">Org Builder is inside it</h2>
<p>Readers of the <a href="https://thenestedlab.com/series/org-builder/">Org Builder</a> series will
recognise part of this. Org Builder packages VCF Automation&rsquo;s own constructs,
such as blueprints, property groups, request forms and content libraries, and
installs them into an organization with that organization&rsquo;s own values.</p>
<p>Lab Builder carries Org Builder 1.0.0 and uses it for the catalog. Org Builder
answers &ldquo;how does this reach another organization&rdquo;. Lab Builder answers &ldquo;what
should be in it, and how does a class use it&rdquo;.</p>
<h2 id="making-it-your-own-course">Making it your own course</h2>
<p>A course is not a fixed thing, so neither is the catalog.</p>
<p>The shape of a lab is a handful of values in the site file. How many hosts a lab has,
and how much CPU, memory and disk each one gets. Which VCF media release they build,
which Ubuntu releases the lab server offers, and which phases the students&rsquo; project
sees. Change those and regenerate: the blueprints, the request
forms, the diagrams and the documents all follow from the same file.</p>
<p>The phases themselves are ordinary VCF Automation blueprints in an ordinary package.
A site that wants a phase of its own adds a blueprint and a request form to the
package and saves it as a new version. None of that is privileged: it is the same
package format the <a href="https://thenestedlab.com/series/org-builder/">Org Builder</a> series took
apart, and the same editor.</p>
<p><img alt="VCF Automation&rsquo;s Catalog page showing the lab phase items as cards - the domain controller build, blank hosts, ESXi hosts, the vCenter, Operations and NSX, and an Ubuntu lab server - each with what it contains, how long it takes and the project it is released into" loading="lazy" src="/images/lab-builder-vcfa-catalog-live.jpg">
<em>A site&rsquo;s own catalog, in VCF Automation&rsquo;s portal. Each card says what the lab arrives with and roughly how long it takes, from five minutes for the first phase to a few hours for the last.</em></p>
<p>The documents come out of that file too. The kit builds twelve of them, in Word and
in Markdown. A datasheet and a site survey. The implementation guide and its
checklist, the kit guide, and the design notes for student access and for the
catalog. The trainers&rsquo; class runbook, and the students&rsquo; runbook with a screenshot at
nearly every step. Change the lab&rsquo;s shape and they change with it, which is the only
way I know to keep a runbook honest past its second edit.</p>
<h2 id="it-neednt-be-a-classroom">It needn&rsquo;t be a classroom</h2>
<p>A class is where this started, so a class is what the catalog in these posts builds.
Nothing underneath it is about teaching.</p>
<p>The same site file, the same phases and the same offline kit fit anything that wants a
disposable VCF stack on demand:</p>
<ul>
<li><strong>Proof of concept and demo environments.</strong> Hand someone a stack to poke at instead of
a slide about one, and take it back the same afternoon.</li>
<li><strong>Upgrade rehearsals.</strong> Build the version you run today, practise the upgrade on it,
bin it, and do it again until the real change window is boring.</li>
<li><strong>Support reproductions.</strong> A problem that needs a particular shape of estate gets one,
built to that shape rather than to yours.</li>
<li><strong>Feature practice.</strong> NSX policies, vSAN failure handling, Operations dashboards:
better learned on something nobody minds you breaking.</li>
<li><strong>A platform team&rsquo;s own sandbox.</strong> One VPC each, from the same catalog, with the
separation a class gets.</li>
</ul>
<p>The catalog needn&rsquo;t even be nested labs. The phases are ordinary VCF Automation
blueprints in an Org Builder package. A set of blueprints a site keeps rebuilding by
hand can be packaged, versioned and installed the same way, with that site&rsquo;s own
values.</p>
<h2 id="whats-next">What&rsquo;s next</h2>
<p>Three posts, this one included. Next week: what a student actually gets, and what
the week looks like from their side of the screen. The week after: delivering it,
from an empty site file to a classroom, and what the site has in its own portal at
the end of the day.</p>
<p>After that the <a href="https://thenestedlab.com/series/nested-labs-as-code/">Nested Labs as Code</a>
series picks up the inside of it: the blueprints, the lab network, the phases
and the site file.</p>
<h2 id="why-this-matters-outside-the-lab">Why this matters outside the lab</h2>
<p>Training is the use case we built it for, but the shape is not unique to
training.</p>
<p>Any team needing a throwaway VCF stack on demand has the same problem. Somewhere
to put it. A way in that does not expose everything else. Images with no internet
to fetch them. A way to hand one out without a ticket. Proof of concept work,
upgrade rehearsals and support reproductions all want the same thing: a stack
that can be built, broken and binned on the same afternoon.</p>
<p>The site file is the portable idea. Describe a site once and generate everything
from it. The gap between what you built and what you documented then stops
growing on its own.</p>
<h2 id="rules-learned">Rules learned</h2>
<ul>
<li>Build the classroom, not the lab. The stack is the easy half; the
organization, the network, the access and the documents are the half that
decides whether a class can run.</li>
<li>Generate the documents from the same file as the build. Two sources of truth
for one site means the runbook is wrong by the second class.</li>
<li>Make the kit carry its own runtime. An air-gapped workstation is not the place
to discover a missing dependency.</li>
</ul>
<h2 id="broadcom-documentation">Broadcom documentation</h2>
<ul>
<li><a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-9-0-and-later/9-1/vcf-automation.html">VCF Automation</a>: the product the catalog lives in.</li>
<li><a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-9-0-and-later/9-1/organization-management/managing-blueprints-in-vcf-automation.html">Managing blueprints in VCF Automation</a>: blueprints, versions and releases.</li>
<li><a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/vcf-9-0-and-later/9-1/advanced-network-management/vpcs.html">VPCs in VCF</a>: the network each lab sits in.</li>
</ul>
<hr>
<p><em>Lab environment; opinions my own. Lab Builder for VCF is our own tooling, not a
Broadcom product. VMware, VCF, VCF Automation and vDefend are trademarks of
Broadcom Inc. or its subsidiaries.</em></p>
]]></content:encoded>
    </item>
  </channel>
</rss>
