SUSE Virtualization Workshop: Lab Guide¶
Version: 2.0 | Duration: ~3 hours (after deploy)
Author: Andres Valero, Principal Technology Advocate, SUSE
Self-hosted twin of suse-virt-rodeo. Same nine exercises, deployed with rodeo-cli.
Versions: Harvester 1.8.1 · Rancher 2.14.1 · K3s v1.35.3+k3s1 · rodeo-cli v0.14.x
0. Deploy the lab (instructor / self-serve)¶
curl -fsSL https://raw.githubusercontent.com/avaleror/rodeo-cli/main/install.sh | bash
git clone https://github.com/avaleror/suse-virt-workshop.git
cd suse-virt-workshop
rodeo doctor
rodeo up
- Time: 90-150 min. Survive disconnects:
tmux attach -t rodeo-harvester - UIs: Harvester
https://<host-ip>:8443· Rancherhttps://<host-ip>:30002 - User
admin· passwords in~/.rodeo/secrets.yaml - Tear down:
rodeo clean --yes
Full detail: Host setup.
Exercise 1: The Arrival (30 min)¶
curl -sk https://192.168.122.10/v1and:30002/v3- both healthy;rodeo statusOK.- Rancher → Virtualization Management → Import Existing → name
harvester→ copy URL. - Harvester → Settings → cluster-registration-url → paste → Save → wait until Active.
- Tour Dashboard / Hosts / Support (download kubeconfig).
rodeo ssh harvester1→kubectl get nodes- three Ready.
Exercise 2: The Subterranean Divide (30 min)¶
- Inspect Hosts;
rodeo ssh harvester1→ls /var/lib/harvester/defaultdisk/replicas. - Create namespaces
prodanddev. - Review StorageClass
harvester-longhorn(3 replicas). - Create StorageClass
harvester-longhorn-1rep(1 replica). - Create VM network
prod/service(UntaggedNetwork onmgmt). - Register SSH key
prod/defaultfrom the host's~/.ssh/*.pub. - Upload cloud image into
official-images(wait Active). - Optional: cloud-init user-data template
prod/prodwith qemu-guest-agent.
Exercise 3: The Flash Crash (30 min)¶
Create VM prod/algo-trader-01: 2 CPU / 2 GiB, SSH prod/default, label stage=prod, root disk from cloud image (5 GiB) + volume market-data-vol (1 GiB), network prod/service, network-data static IP 192.168.122.50/24. Console + ssh opensuse@192.168.122.50.
Exercise 4: The Rising Tide (25 min)¶
- Create
webserver-prodanddaily-batch-processoronprod/service. - Pause the batch VM;
pingthe gateway IP; leave it running. - Migrate
webserver-prodto another node; confirm ping/uptime survive. - Unpause batch; put the old node in Maintenance Mode; watch evacuation.
Exercise 5: The Invisible Intruder (30 min)¶
- Cluster network
closed-loopwith uplink NIC (oftenens5). - VM network
prod/secure-loop-prod(Untagged onclosed-loop). - Overlay
dev/secure-loop-dev+ subnetsecure-vpc-dev(192.168.32.0/24). - Edit a VM → attach isolated network → stop/start to apply.
Exercise 6: The Unthinkable Error (30 min)¶
- On
transaction-ledger(create if needed): writeledger.txt, snapshotpre-disaster-backup, delete the file. - Restore snapshot to new VM
ledger-staging-verify; verify file. - Power off prod → Restore snapshot → power on → verify.
- Set backup-target NFS to
192.168.122.1:/srv/backups/(lab NFS on host). - Create a recurring backup/snapshot schedule.
Exercise 7: The Stampede (25 min)¶
- Template
harvester-public/prod-basic(1 CPU / 1 GiB,prod/default, cloud image,prod/service, labelstage=prod). - Create
calc-engine-01…03from template; scale to five; delete extras.
Exercise 8: The Final Showdown (25 min)¶
- Open Advanced → Migration → Sources (Instruqt has
isaware-legacy-01; bare metal may be empty - learn the form). - Create stand-in
legacy-ledger-vmonprod/service. systemctl enable --now qemu-guest-agentinside the guest.- Snapshot
post-migration-baseline; live-migrate once.
Exercise 9: A New Horizon (10 min)¶
Review the skill table; bookmark SUSE Virtualization docs; tear down with rodeo clean --yes when finished.
Cheat sheet¶
| Item | Value |
|---|---|
| Harvester | https://<host-ip>:8443 |
| Rancher | https://<host-ip>:30002 |
| VIP / nodes | .10 / .11–.13 · rancher .9 |
| Passwords | ~/.rodeo/secrets.yaml |
| Guest example | ssh opensuse@192.168.122.50 |
| Ops | rodeo status · rodeo ssh harvester1 · rodeo watch |