Add image-based provisioning (liveimg) #3

Merged
benvin merged 1 commits from benvin/image-provisioning into main 2026-07-30 21:05:24 +10:00
Owner

Why

Adds a fast, reproducible install path that unpacks a prebuilt AlmaLinux 9 node rootfs onto the device (Anaconda liveimg) instead of resolving packages, while keeping networking templated per-host. Reuses the OptiPlex storage vars so image and package installs lay disks out identically. Templates-only (per review): the rootfs build lives in a separate repo.

Change

  • Add kickstart/image.ks.tmpl: liveimg --url={{ .DistroVars.rootfs_tarball }}; %post renders per-host NetworkManager keyfiles from NetBox interface data (the image is generic and liveimg overwrites /etc), plus hostname, puppet-initial PUPPETCA_URL, and the provisioned callback.
  • Factor storage into kickstart/_storage.ks.tmpl (shared storage-block/storage-pre); almalinux9.ks.tmpl now uses it (no behaviour change).
  • Add catalog entries almalinux9-image (VM autopart) and optiplex-7080-image (auto-nvme + vg_grow), pointing liveimg at the artifactapi rootfs-images local repo.

No bootapi code change; validated with bootapi validate + shellcheck.

Related

The rootfs tarball this catalog references is built and published by bootapi-images (moved out of here per review). Upload target rootfs-images was created by terraform-artifactapi#18.

https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv

## Why Adds a fast, reproducible install path that unpacks a prebuilt AlmaLinux 9 node rootfs onto the device (Anaconda liveimg) instead of resolving packages, while keeping networking templated per-host. Reuses the OptiPlex storage vars so image and package installs lay disks out identically. **Templates-only** (per review): the rootfs build lives in a separate repo. ## Change - Add `kickstart/image.ks.tmpl`: `liveimg --url={{ .DistroVars.rootfs_tarball }}`; `%post` renders per-host NetworkManager keyfiles from NetBox interface data (the image is generic and liveimg overwrites /etc), plus hostname, puppet-initial `PUPPETCA_URL`, and the provisioned callback. - Factor storage into `kickstart/_storage.ks.tmpl` (shared `storage-block`/`storage-pre`); `almalinux9.ks.tmpl` now uses it (no behaviour change). - Add catalog entries `almalinux9-image` (VM autopart) and `optiplex-7080-image` (auto-nvme + vg_grow), pointing liveimg at the artifactapi `rootfs-images` local repo. No bootapi code change; validated with `bootapi validate` + shellcheck. ## Related The rootfs tarball this catalog references is built and published by **[bootapi-images](https://git.unkin.net/unkin/bootapi-images)** (moved out of here per review). Upload target `rootfs-images` was created by terraform-artifactapi#18. https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
unkinben added 1 commit 2026-07-30 21:00:35 +10:00
Add image-based provisioning (liveimg) templates + catalog
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
ci/woodpecker/pr/validate Pipeline was successful
105487c090
Adds a fast, reproducible install path that unpacks a prebuilt AlmaLinux 9 node
rootfs onto the device (Anaconda liveimg) instead of resolving packages, with
per-host networking still templated after the unpack. Reuses the OptiPlex storage
vars so image and package installs lay disks out identically. Templates-only per
review; the rootfs build lives in the bootapi-images repo.

- kickstart/image.ks.tmpl: liveimg --url={{ .DistroVars.rootfs_tarball }};
  %post renders per-host NetworkManager keyfiles from NetBox interface data
  (the image is generic and liveimg overwrites /etc), hostname, puppet-initial
  PUPPETCA_URL env, and the provisioned callback.
- kickstart/_storage.ks.tmpl: shared storage-block/storage-pre partials
  (storage_mode / vg_grow); almalinux9.ks.tmpl now uses them (no behaviour
  change).
- catalog/almalinux9-image.yaml (VM autopart) + optiplex-7080-image.yaml
  (auto-nvme + vg_grow), rootfs_tarball -> artifactapi rootfs-images repo.

Rootfs tarball built+published by https://git.unkin.net/unkin/bootapi-images
(v* tag). Validated with bootapi validate + shellcheck; no bootapi code change.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
unkinben force-pushed benvin/image-provisioning from c66eaedbd8 to 105487c090 2026-07-30 21:00:35 +10:00 Compare
benvin merged commit 9416722b9a into main 2026-07-30 21:05:24 +10:00
benvin deleted branch benvin/image-provisioning 2026-07-30 21:05:25 +10:00
Sign in to join this conversation.