William PoolIndustrial automation & IT/OT convergence
ENFR
All projects

07MESEA · technician training

Proxmox training lab — crisis simulation for technicians

A nested Proxmox environment that mirrors a production cluster: each technician gets their own three-node cluster with a backup server, crisis scenarios are injected, and a trainer tool puts every lab back to a clean state in one command.

  • Per trainee3 PVE nodes + PBS
  • Referenceproduction, read-only
  • Resetgolden snapshot
RoleTraining design, lab architecture, crisis scenarios and trainer tooling
ContextMESEA · technician training
Stack
  • Proxmox VE 9
  • Nested virtualisation
  • Proxmox Backup Server
  • Corosync
  • SDN / VLAN
  • LVM-thin
  • ZFS
  • Python
  • curses
  • Apache Guacamole
  1. 01Productionread-only inventory
  2. 02Training specnetworks · SDN · storage
  3. 03Nested labs3 PVE + PBS per trainee
  4. 04Crisis scenariosinjected faults
  5. 05labctlsnapshot · reset
Fig. 07.1 — From production to the classroom

Why

Maintenance technicians need to practise on a Proxmox cluster that behaves like production — quorum, networks, storage, backups — without any risk to the real one. The aim is to rehearse incidents and recoveries on a faithful copy, as often as needed, and to learn the right reflexes before they are needed on the line.

Production inventory, read-only

The training spec starts from a read-only inventory of the production cluster, taken through a jump host: no change on production and no password stored. It records what the lab has to reproduce:

  • Three nodes with a two-vote quorum, Corosync on a dedicated link with secure authentication.
  • Separate management, Corosync and migration / replication networks, with LACP bonds on the compute nodes.
  • VLAN-aware bridges carrying several SDN zones and their VNets.
  • Local, LVM-thin and ZFS storage, and a Proxmox Backup Server with prune, verify and garbage-collection jobs.

Addresses, host names and network names of the real installation stay out of this page.

Nested lab architecture

One physical host runs a complete, isolated lab per trainee: three virtual Proxmox VE nodes and a virtual Proxmox Backup Server — the production layout, scaled down rather than simplified.

  • Three nodes and a quorum of two, with a lighter third node playing the role of the production quorum node.
  • Management, Corosync and migration kept on separate networks, even on smaller lab subnets.
  • The production SDN zones and their main VNets recreated first; the long tail of VNets comes as a second step.
  • Local and LVM-thin storage everywhere, ZFS on two nodes, and a backup datastore modelled on the production one.
  • Trainees work from a web browser through Apache Guacamole, one session each.
Training lab architecture
From the read-only production inventory to one nested lab per trainee: three PVE nodes, a PBS, separate management / Corosync / migration networks.

Crisis scenarios

Each exercise starts from a known, healthy cluster. The trainer then injects a fault — a broken Corosync link, a saturated LVM-thin pool and other realistic failures — and each technician diagnoses and restores the service on their own cluster, as they would during a real incident.

  1. Freeze a clean reference state of every lab as the “initial” golden snapshot.
  2. Inject the scenario and let each technician work on their own cluster.
  3. Save progress as an “actuel” snapshot when a session has to pause.
  4. Put every lab back to “initial”, in parallel, for the next exercise or the next group.

labctl — the trainer's console

A Python tool written for the trainer, usable as a full-screen terminal interface (curses) or as a command line: status, snapshot, restore.

  • Per lab: how many VMs are running, and whether the “initial” and “actuel” snapshots exist.
  • Labs are ticked in the interface; actions run on every selected lab in parallel, with a live log.
  • Clean ordering: VMs stopped in reverse order (backup server first), snapshotted or rolled back, then restarted in boot order.
  • A confirmation before every action, and a second one before overwriting an existing snapshot.
  • Key-only SSH in batch mode; everything goes through the standard qm and pvesh commands.
labctl terminal interface
labctl TUI — layout reproduced from the tool, with a sample status and log; lab addresses masked.

Result

Technicians can break and repair a production-like cluster as often as needed, and the trainer gets every lab back to a clean state with a single command — without ever touching production.