Files
bootapi-images/README.md
unkinben ac1a5d85f6 Seed bootapi-images: AlmaLinux node rootfs build
Builds the AlmaLinux 9 node rootfs tarball bootapi's image-based provisioning
(liveimg) unpacks, and on a v* tag publishes almalinux9-node-<ver>.tar.zst to the
artifactapi rootfs-images repo. Moved out of bootapi-templates (which stays
templates-only) per review on bootapi-templates#3.

- packages.txt (bake list) + scripts/build-rootfs.sh (dnf --installroot -> tar.zst).
- .woodpecker: pre-commit + shellcheck (PR); build+upload on v* tag.
- Makefile (build/lint/patch|minor|major).

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-30 21:04:06 +10:00

1.6 KiB

bootapi-images

Builds the AlmaLinux 9 node rootfs tarball that bootapi's image-based provisioning unpacks with Anaconda liveimg. On a v* tag it publishes almalinux9-node-<ver>.tar.zst to the artifactapi rootfs-images local repo, where the bootapi-templates almalinux9-image catalog entry's rootfs_tarball points.

This is the build half; the kickstart/catalog that consumes the tarball live in bootapi-templates. Kept separate so that repo stays templates-only.

What's baked in

packages.txt is the package set installed into the rootfs — everything the image.ks.tmpl %post assumes is already present (kernel, grub2 BIOS+UEFI, dracut, NetworkManager, openssh, chrony, kexec-tools, curl, …). puppet-agent is added from the puppet platform repo in scripts/build-rootfs.sh. Per-host config (networking, hostname, puppet server, callback) stays in the kickstart %post.

Layout

packages.txt            # bake list (one package per line)
scripts/build-rootfs.sh # dnf --installroot -> tar.zst
.woodpecker/            # pre-commit + lint (PR); release build+upload (v* tag)
Makefile                # build / lint / patch|minor|major

Releasing an image

make patch|minor|major tags v<x.y.z> and pushes; CI builds the rootfs and uploads almalinux9-node-<x.y.z>.tar.zst. Then bump rootfs_tarball in the bootapi-templates almalinux9-image catalog entry to the new version (immutable; overwrites are 409-rejected).

Build locally (needs dnf, tar, zstd, root):

make build VERSION=v0.0.0-dev