4.4 KiB
VM Setup — Getting Started
Everything runs inside a VirtualBox VM provisioned by Vagrant. This page walks you through starting the VM and verifying it is healthy before the workshop begins.
Requirements (install on your laptop before the workshop)
Do this the day before — downloads can be slow on conference WiFi.
| Tool | Version | Download |
|---|---|---|
| VirtualBox | 7.x | https://www.virtualbox.org/wiki/Downloads |
| Vagrant | 2.4.x | https://developer.hashicorp.com/vagrant/downloads |
| Git | any | https://git-scm.com/downloads |
RAM: The VM uses 8 GB. Your laptop should have at least 12 GB total RAM free. Disk: ~15 GB free (Vagrant box ~1 GB + k3s images ~5 GB + workspace).
Apple Silicon (M1/M2/M3/M4): VirtualBox 7.1+ supports Apple Silicon — make sure to download the "macOS / Apple Silicon hosts" build from the VirtualBox download page, not the Intel build.
Verify your installs before continuing
# All three must return a version number — if any fail, install it first
VBoxManage --version # e.g. 7.1.4r165100
vagrant --version # e.g. Vagrant 2.4.3
git --version # e.g. git version 2.x.x
If VBoxManage is not found after installing VirtualBox, reboot your laptop —
VirtualBox installs a kernel extension that requires a restart.
Step 1 — Clone the repo
git clone https://github.com/paulharkink/ops-demo.git
cd ops-demo
Step 2 — Start the VM
vagrant up
First run takes 10–15 minutes: Vagrant downloads the Ubuntu 24.04 box, installs
k3s, Helm, yq, and pre-pulls the workshop container images. Subsequent vagrant up
calls start the existing VM in under a minute.
You should see:
════════════════════════════════════════════════════════
VM provisioned successfully!
SSH: vagrant ssh
Next step: follow docs/vm-setup.md to verify, then
run scripts/bootstrap.sh to install ArgoCD
════════════════════════════════════════════════════════
Step 3 — SSH into the VM
vagrant ssh
You are now inside the VM. All workshop commands run here unless stated otherwise.
Step 4 — Verify the setup
# 1. k3s is running
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# ops-demo Ready control-plane,master Xm v1.31.x+k3s1
# 2. Helm is available
helm version
# version.BuildInfo{Version:"v3.16.x", ...}
# 3. The workshop repo is mounted at /vagrant
ls /vagrant
# apps/ docs/ manifests/ scripts/ Vagrantfile README.md
# 4. The host-only interface has the right IP
ip addr show eth1
# inet 192.168.56.10/24
Step 5 — Verify host connectivity
From your laptop (not the VM), confirm you can reach the VM's host-only IP:
ping 192.168.56.10
If this times out, check your VirtualBox host-only network adapter:
# macOS/Linux
VBoxManage list hostonlyifs
# Should show vboxnet0 with IP 192.168.56.1
# Windows
VBoxManage list hostonlyifs
If no host-only adapter exists:
VBoxManage hostonlyif create
VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1 --netmask 255.255.255.0
Then re-run vagrant up.
Working directory
Inside the VM, the repo is available at /vagrant (a VirtualBox shared folder).
All workshop commands are run from /vagrant:
cd /vagrant
Stopping and restarting the VM
vagrant halt # graceful shutdown (preserves state)
vagrant up # restart
vagrant suspend # pause (faster resume, uses disk space)
vagrant resume # resume from suspend
vagrant destroy # delete the VM entirely (start fresh)
Troubleshooting
| Symptom | Fix |
|---|---|
vagrant up: "No usable default provider" |
VirtualBox is not installed — install it and reboot, then retry |
vagrant up fails: VT-x/AMD-V not enabled |
Enable virtualisation in BIOS/UEFI settings |
vagrant up fails: port conflict |
Another VM may be using the host-only range; stop it |
kubectl get nodes shows NotReady |
k3s is still starting; wait 30–60 s |
/vagrant is empty inside VM |
Shared folder issue; try vagrant reload |
| Very slow image pulls | Images should be pre-pulled; if not, wait 5–10 min |