Skip to content

VMware & Provisioning Overview

VMware

The lab's compute layer is vSphere: a single vCenter (VCSA) managing a cluster of ESXi hosts (devhome-cl), with everything above the hypervisor — hosts, networking, datastores, VMs, and Kubernetes clusters — provisioned by Terraform against the vsphere provider. See Compute & Storage for the cluster's host/VLAN/datastore layout.

The pipeline, end to end

  1. Packer builds golden VM templates from ISOs staged on the NAS — Ubuntu, Windows, and the HAProxy appliance used for Kubernetes control-plane load balancing.
  2. Terraform consumes those templates: it onboards ESXi hosts into the cluster, wires up networking/storage, and clones VMs — including full Kubernetes clusters via kubeadm, orchestrated through a custom module and Ansible provisioners.
  3. Ansible takes over for anything that's ongoing configuration rather than one-time provisioning: cluster start/stop, backups, certificate renewal.
  4. ArgoCD/Rancher take over once a cluster exists — everything that runs inside a cluster is GitOps-delivered, not provisioned by Terraform.

Terraform directory layout (terraform/vsphere/)

Directory Owns
base/ The devhome-cl cluster itself, ESXi host onboarding, the shared workload VDS, NFS datastore mounts
compute/ General-purpose VMs (dev VMs, Windows, dke-mgmt)
modules/k8s/ The reusable kubeadm cluster module — used to stand up new dke-* workload clusters
modules/argocd-register-clust/ Registers a cluster into ArgoCD as a target, given a kubeconfig
modules/vault-k8s-auth/ Wires a cluster's ServiceAccount into Vault's Kubernetes auth method
supervisor/ (Retired) the standalone Tanzu Supervisor stack — its cluster/VDS were folded into base/; only HAProxy/content-library/namespace resources remain relevant if this gets rebuilt