diff options
| author | Craig Jennings <c@cjennings.net> | 2026-01-27 17:22:55 -0600 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-01-27 17:22:55 -0600 |
| commit | 70bb2d5ab1bf6787bc613e33f5398be2eca1f5fd (patch) | |
| tree | 0d8cd5057dd32f5f312a7f3534d590b99c2f0f91 /assets/archangel.conf.example | |
| parent | 0c6175bfc98f2c5ff2debc665fd8bf91f9171f4e (diff) | |
feat(testing): rewrite test infrastructure from libvirt to direct QEMU
Replace the never-fully-operational libvirt-based VM test infrastructure
with direct QEMU management and archangel ISO for fully automated,
unattended base VM creation.
Key changes:
- vm-utils.sh: complete rewrite — QEMU process mgmt via PID file,
monitor socket for graceful shutdown, qemu-img snapshots, SSH
port forwarding (localhost:2222)
- create-base-vm.sh: boots archangel ISO, SSHs in, runs unattended
install via config file, verifies, creates clean-install snapshot
- run-test.sh: snapshot revert, git bundle transfer, detached archsetup
execution with setsid, polling, validation, and report generation
- debug-vm.sh: CoW overlay disk, GTK display, auto-cleanup on close
- setup-testing-env.sh: reduced deps to qemu-full/sshpass/edk2-ovmf/socat
- cleanup-tests.sh: PID-based process management, orphan detection
- validation.sh: port-based SSH (backward compatible), fuzzel/foot for
Hyprland, corrected package list paths
- network-diagnostics.sh: getent/curl instead of nslookup/ping (SLIRP)
New files:
- archsetup-test.conf: archangel config for base VM (btrfs, no encrypt)
- archsetup-vm.conf: archsetup config for unattended test execution
- assets/archangel.conf.example: reference archangel config
Deleted:
- finalize-base-vm.sh: merged into create-base-vm.sh
- archinstall-config.json: replaced by archangel .conf format
Tested: full end-to-end run — 51 validations passed, 0 failures.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'assets/archangel.conf.example')
| -rw-r--r-- | assets/archangel.conf.example | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/assets/archangel.conf.example b/assets/archangel.conf.example new file mode 100644 index 0000000..dacf340 --- /dev/null +++ b/assets/archangel.conf.example @@ -0,0 +1,96 @@ +# archangel.conf - Unattended Installation Configuration +# +# Copy this file and edit values. +# Usage: archangel --config-file /path/to/your-config.conf +# +# Required fields: HOSTNAME, TIMEZONE, DISKS, ROOT_PASSWORD +# For ZFS: also need ZFS_PASSPHRASE or NO_ENCRYPT=yes +# All other fields have sensible defaults. + +############################# +# Filesystem Selection +############################# + +# Filesystem type (optional, default: zfs) +# Options: zfs, btrfs +# Note: btrfs support coming soon +FILESYSTEM=zfs + +############################# +# System Configuration +############################# + +# Hostname for the installed system (required) +HOSTNAME=archangel + +# Timezone (required) - Use format: Region/City +# Examples: America/Los_Angeles, Europe/London, Asia/Tokyo +TIMEZONE=America/Los_Angeles + +# Locale (optional, default: en_US.UTF-8) +LOCALE=en_US.UTF-8 + +# Console keymap (optional, default: us) +KEYMAP=us + +############################# +# Disk Configuration +############################# + +# Disks to use for installation (required) +# Single disk: DISKS=/dev/vda +# Multiple disks: DISKS=/dev/vda,/dev/vdb,/dev/vdc +DISKS=/dev/vda + +# RAID level for multi-disk setups (optional) +# Options: mirror, stripe, raidz1, raidz2, raidz3 +# Default: mirror (when multiple disks specified) +# Leave empty for single disk +RAID_LEVEL= + +############################# +# Security +############################# + +# ZFS encryption passphrase (required unless NO_ENCRYPT=yes) +# This will be required at every boot to unlock the pool +ZFS_PASSPHRASE=changeme + +# Skip ZFS encryption (optional, default: no) +# Set to "yes" to create an unencrypted pool +# Use cases: +# - VMs or test environments +# - Systems with hardware encryption (SED drives) +# - Data that doesn't require encryption +# WARNING: Without encryption, anyone with physical access can read your data +#NO_ENCRYPT=no + +# Root password (required) +ROOT_PASSWORD=changeme + +############################# +# Network Configuration +############################# + +# Enable SSH with root login (optional, default: yes) +# Set to "no" to disable SSH +ENABLE_SSH=yes + +# WiFi configuration (optional) +# Leave empty for ethernet-only or to skip WiFi setup +WIFI_SSID= +WIFI_PASSWORD= + +############################# +# Advanced ZFS Options +############################# + +# Pool name (optional, default: zroot) +#POOL_NAME=zroot + +# Compression algorithm (optional, default: zstd) +#COMPRESSION=zstd + +# Sector size shift (optional, default: 12 for 4K sectors) +# Use 13 for 8K sector drives +#ASHIFT=12 |
