Implements the first wave of lab validation infrastructure: incusos-proxmox enhancements: - --doctor flag: standalone environment health check (tool versions, IncusOS CDN availability, Proxmox connectivity). Works with or without a config file. - --cleanup --deep: extended cleanup that also removes seed ISOs, IncusOS ISOs from Proxmox storage, matching incus remotes, and the local ISO cache (~/.cache/incusos-proxmox/iso-cache/). - --cleanup-all: pool-wide cleanup that destroys ALL VMs with the [incusos-lab:managed] marker in the configured resource pool. Requires a pool to be set in config for safety scoping. New script -- lab-test: - Guided lab validation with 5 phases: deploy & verify, single-node workloads (container + VM lifecycle), cluster formation (enable + join via incus remotes), cluster workloads (scheduler-placed + targeted), and migration & evacuation (stop/move + evacuate/restore). - Interactive by default with --yes for unattended runs. - Reports PASS/FAIL/SKIP per test with a summary. - Supports --dry-run, --skip-deploy, --cleanup, per-phase execution. - Reads the same YAML config format as incusos-proxmox. New example configs: - lab-cluster.yaml: 3-node Incus cluster (VMID 900+) for testing clustering, workloads, and migration. - lab-oc.yaml: Operations Center + 3 Incus nodes (VMID 910+) for testing OC-managed provisioning and cluster formation. Documentation: - CLAUDE.md: added clustering workflow (incus cluster enable/add/join via remotes), lab-test overview, Operations Center CLI notes, doctor and cleanup feature descriptions. - README.md: added lab-test section with usage/phases/options, doctor check docs, deep cleanup docs, new example files in listing. - TESTING.md: added full lab validation guide (quick start, phase-by- phase testing, manual cluster formation alternative, OC lab workflow with CLI setup and provisioning steps), cleanup instructions. Not yet tested against live infrastructure -- next step is to deploy lab-cluster.yaml, add incus remotes, and run lab-test end-to-end. Known areas to validate: cluster join syntax with remotes, VM nested virt support, evacuation behavior, apply_defaults consistency across cluster members. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| incusos | ||
| notes | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
README.md
incu-contrib
Peripheral tools, snippets, and scripts for working with Incus, IncusOS, and the broader ecosystem.
Primarily aimed at home lab environments but useful in production as well.
Contents
incusos/
Scripts for building IncusOS installation media and seed configurations:
-
incusos-iso-- Build customized IncusOS ISO/IMG images using the official flasher-tool. Supports both architectures (x86_64, aarch64), multiple applications (Incus, Operations Center), automatic client certificate injection, and batch generation. -
incusos-seed-- Generate IncusOS seed archives (tar or FAT image) for installation customization. Covers all seed file types: install, applications, Incus preseed, Operations Center, network, and update configuration. -
incusos-proxmox-- Declarative IncusOS deployment on Proxmox VE. Define VMs in YAML, and the script handles seed generation, ISO upload, VM creation with correct settings (UEFI, TPM 2.0, VirtIO-SCSI), and automated installation.
See incusos/README.md for full documentation.
notes/
Research notes and reference material:
incus-version-compatibility.md-- Incus package versions across platforms (macOS, Debian/Ubuntu, Arch), install instructions, and certificate management notes.iso-download-methods.md-- Original research on ISO download/customization approaches.
Quick Start
# Install the flasher-tool (requires Go 1.22+)
go install github.com/lxc/incus-os/incus-osd/cmd/flasher-tool@latest
# Build a default IncusOS ISO with your client cert injected
./incusos/incusos-iso
# Build for a specific architecture and application
./incusos/incusos-iso --arch aarch64 --app operations-center --defaults
# Generate all common ISO variants at once
./incusos/incusos-iso --batch
# Generate a standalone seed archive
./incusos/incusos-seed --app incus --defaults --output my-seed.tar
# Generate a SEED_DATA FAT image for external boot media
./incusos/incusos-seed --format fat --app incus --defaults --output seed.img
Requirements
- Go 1.22+ -- for installing the flasher-tool
- curl -- for downloading images from the CDN
- tar, gzip -- for seed archive creation and image decompression
- Incus client (recommended) -- for automatic client certificate detection. Works with any version; certificates are read directly from disk. See version compatibility notes for install instructions per platform (macOS, Debian/Ubuntu, Arch).
- mtools (optional) -- for creating FAT seed images
License
MIT