12 Commits

Author SHA1 Message Date
benvin 5df1894803 Merge pull request 'Add inst.ks.sendmac to the iPXE boot script' (#6) from benvin/ipxe-sendmac into main
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
Reviewed-on: #6
2026-08-08 18:16:14 +10:00
unkinben ee81dd9e51 Add inst.ks.sendmac to the iPXE boot script
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
Cobbler's per-MAC gPXE script passed inst.ks.sendmac, making anaconda send its
interface MACs as X-RHN-Provisioning-MAC-N headers when fetching the kickstart.
The bootapi iPXE script omitted it, so it was not a full drop-in for Cobbler's
gpxe output.

- Emit inst.ks.sendmac immediately before inst.ks= in the boot iPXE template,
  matching Cobbler ordering.

Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
2026-08-06 22:19:32 +10:00
benvin bbbb4a4bbc Merge pull request 'Add optiplex-3070 catalog entry' (#4) from benvin/cobbler-host-sync into main
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
Reviewed-on: #4
2026-08-05 19:36:39 +10:00
unkinben 06488b8d18 Add optiplex-3070 catalog entry
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
Six new prodnxsr0014-0019 Dell OptiPlex 3070 hosts were registered on the
legacy cobbler server (profile almalinux9-dell_3070) but the fleet had no
matching bootapi catalog entry, so they would fall to the generic almalinux9
autopart-on-sda path.

- Add catalog/optiplex-3070.yaml: auto-nvme, UEFI-aware, fixed ~31G LVM
- Document the entry in catalog/README.md shipped list and per-model table

Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
2026-08-04 00:24:21 +10:00
benvin 9416722b9a Merge pull request 'Add image-based provisioning (liveimg)' (#3) from benvin/image-provisioning into main
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
Reviewed-on: #3
2026-07-30 21:05:24 +10:00
unkinben 105487c090 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
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
2026-07-30 21:00:33 +10:00
benvin 0e211893db Merge pull request 'Add per-model OptiPlex kickstart variants from live Cobbler' (#2) from benvin/optiplex-models into main
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
Reviewed-on: #2
2026-07-29 21:36:05 +10:00
benvin 4fda9c535c Merge pull request 'Seed bootapi templates + distro catalog' (#1) from benvin/bootapi-templates-initial into main
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
Reviewed-on: #1
2026-07-29 21:33:27 +10:00
unkinben 80dbcdd108 Add per-model OptiPlex kickstart variants from live Cobbler
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
The seed almalinux9 kickstart reconstructed the Cobbler contract from memory
and guessed storage: it installed to sda with autopart and keyboard us. The
real Cobbler server (cobbler.main.unkin.net) provisions the OptiPlex fleet from
three model-specific profiles (almalinux9-dell_3050 / _3060 / _7080) that all
install to NVMe with an explicit LVM layout and differ in disk selection, EFI
handling and whether the VG grows. This folds that real content in, keeping one
shared template driven by per-model catalog data.

Changes:
- Make almalinux9.ks.tmpl storage model-aware via .DistroVars.storage_mode:
  fixed-nvme (static nvme0n1, BIOS/MBR), auto-nvme (%pre picks the internal
  NVMe, UEFI-aware, --boot-drive), with vg_grow to grow the PV; generic/VM
  hosts keep the autopart-on-sda path.
- Port the explicit LVM layout (/boot, root, swap, /home, /var/log) and the
  %pre NVMe picker + rootvg wipe from the real Cobbler dell templates.
- Add catalog entries optiplex-3050 (fixed-nvme), optiplex-3060 (auto-nvme) and
  optiplex-7080 (auto-nvme + vg_grow), selected by a device's provision_template
  custom field set to the OptiPlex device_type slug.
- Correct keyboard us -> au and add the kdump addon + kexec-tools/bind-utils to
  match the Cobbler profiles.
- Document the per-model variants and selection in catalog/README.md.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-29 00:48:15 +10:00
unkinben 29f10e6150 ci: re-run validate now that bootapi main carries the validate subcommand
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline was successful
ci/woodpecker/pr/validate Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-29 00:15:26 +10:00
unkinben 24fd6b3ffa Seed bootapi templates + distro catalog
ci/woodpecker/pr/validate Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/push/pre-commit Pipeline was successful
ci/woodpecker/push/validate Pipeline failed
Initial content for bootapi's git-synced template set: the kickstart and iPXE
templates and the distro catalog (almalinux9, fedora) ported from bootapi's
embedded defaults, plus CI that validates every template/catalog renders for
every distro (bootapi validate) and shellchecks the %post blocks.

Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv
2026-07-28 23:10:35 +10:00
gitadmin 769c40e830 Initial commit 2026-07-28 23:09:25 +10:00