Adding packer host tooling

This commit is contained in:
Audiobuzz
2026-06-13 05:07:49 +00:00
parent 8f7833a7e0
commit 327799a666
4 changed files with 31 additions and 3 deletions
+15 -1
View File
@@ -75,11 +75,17 @@ jobs:
# libguestfs (virt-*), erofs-utils (mkfs.erofs), cryptsetup # libguestfs (virt-*), erofs-utils (mkfs.erofs), cryptsetup
# (veritysetup), jq, systemd-ukify (ukify), buildah (OCI), plus qemu + # (veritysetup), jq, systemd-ukify (ukify), buildah (OCI), plus qemu +
# shellcheck for the lint gate. # shellcheck for the lint gate.
#
# libguestfs builds a supermin appliance on first use, which needs a
# kernel + modules present on the runner (incl. xfs, to read the build
# VM's xfs root). The runner container ships none, so install one and
# make /boot readable (Ubuntu ships vmlinuz mode 0600).
run: | run: |
sudo apt-get update sudo apt-get update
sudo apt-get install -y --no-install-recommends \ sudo apt-get install -y --no-install-recommends \
qemu-system-x86 qemu-utils libguestfs-tools \ qemu-system-x86 qemu-utils libguestfs-tools linux-image-generic \
erofs-utils cryptsetup-bin jq systemd-ukify buildah shellcheck erofs-utils cryptsetup-bin jq systemd-ukify buildah shellcheck
sudo chmod 0644 /boot/vmlinuz-* 2>/dev/null || true
- -
name: Setup Packer name: Setup Packer
@@ -106,6 +112,14 @@ jobs:
name: packer validate name: packer validate
run: packer validate . run: packer validate .
-
name: Verify libguestfs appliance (fast gate)
# Fail in ~1 min if supermin can't build/boot the appliance, instead of
# after the ~17-min VM build when extract-artifacts.sh first runs virt-ls.
env:
LIBGUESTFS_BACKEND: direct
run: libguestfs-test-tool
- -
name: Registry login name: Registry login
# Enables oci_push=true in the build step below. # Enables oci_push=true in the build step below.
+10
View File
@@ -7,6 +7,16 @@ immutable **erofs + dm-verity root over NVMe/TCP**. Each release is a signed
**UKI** plus root image packaged as a **FROM-scratch OCI artifact image**. **UKI** plus root image packaged as a **FROM-scratch OCI artifact image**.
The authoritative architecture document is The authoritative architecture document is
`docs/diskless-fleet-design-v2.pdf` — read it before structural changes. `docs/diskless-fleet-design-v2.pdf` — read it before structural changes.
`docs/design-v2-errata.md` records where the as-built RHEL/Rocky 9
implementation diverges from it (pending a consolidated v3).
## Backlog (read at session start)
`docs/TODO.md` is the **persistent backlog** and the durable source of truth for
outstanding work — it survives across sessions (the TodoWrite task tracker does
not). At the start of a session, read it and mirror its open items into the
TodoWrite tracker. Whenever items change (added, started, completed), update
**both** `docs/TODO.md` and the tracker so they stay in sync.
## Repo layout ## Repo layout
+2 -1
View File
@@ -5,7 +5,8 @@ authenticate with 802.1X EAP-TLS (TPM-held key, certificate in TPM NV) and run
MACsec on the access link. The root filesystem is an immutable, reproducible MACsec on the access link. The root filesystem is an immutable, reproducible
**erofs image with an appended dm-verity hash tree**, served as a single **erofs image with an appended dm-verity hash tree**, served as a single
shared **read-only NVMe/TCP namespace**, with a tmpfs overlay for runtime shared **read-only NVMe/TCP namespace**, with a tmpfs overlay for runtime
state. Companion to `docs/diskless-fleet-design-v2.pdf`. state. Companion to `docs/diskless-fleet-design-v2.pdf` (see
`docs/design-v2-errata.md` for as-built deltas on RHEL/Rocky 9).
## Layout ## Layout
+4 -1
View File
@@ -179,7 +179,10 @@ build {
# omits it; without it network-legacy fails dracut's check() and the # omits it; without it network-legacy fails dracut's check() and the
# diskless module 'cannot be installed'. (Strategic path: port the hook to # diskless module 'cannot be installed'. (Strategic path: port the hook to
# the 'network-manager' dracut module — see CLAUDE.md bench-verify notes.) # the 'network-manager' dracut module — see CLAUDE.md bench-verify notes.)
"dnf -y install wpa_supplicant tpm2-tools tpm2-tss nvme-cli cryptsetup dracut-network dhcp-client openssl", # zstd: dracut compresses the initramfs with compress="zstd"
# (90-diskless.conf); the minimal ISO lacks the zstd binary, so without it
# dracut warns and silently falls back to gzip (a larger initramfs).
"dnf -y install wpa_supplicant tpm2-tools tpm2-tss nvme-cli cryptsetup dracut-network dhcp-client zstd openssl",
# Stage etc files into place # Stage etc files into place
"install -D -m0644 /tmp/etc-stage/dot1x/radius-ca.pem /etc/dot1x/radius-ca.pem", "install -D -m0644 /tmp/etc-stage/dot1x/radius-ca.pem /etc/dot1x/radius-ca.pem",