Skip to content

feat(deploy): add PXE controller role for multi-node netboot#112

Closed
Stanley-PH wants to merge 1 commit into
developfrom
feat/pxe-controller-multi-node
Closed

feat(deploy): add PXE controller role for multi-node netboot#112
Stanley-PH wants to merge 1 commit into
developfrom
feat/pxe-controller-multi-node

Conversation

@Stanley-PH
Copy link
Copy Markdown

Summary

Adds the pxe_controller Ansible role and pb-pxe-controller.yml playbook for multi-node PXE netboot deployment, referenced by the Multi-AIPC PXE Netboot deployment guide. Pairs with the docs PR #111.

  • Builds the NFS rootfs, TFTP/dnsmasq Proxy-DHCP, BIOS/UEFI boot menus, Apache K3s token endpoint, and the netboot agent units (set-hostname, k3s-auto-join, mount-local-disk).
  • Ships the mount-local-disk.*.j2 agent persistence templates with a .gitignore negation so the *local* rule doesn't silently drop them.
  • All site-specific values are operator-supplied: blank root password, empty SSH authorized_keys, and empty PXE/k3s server IPs, with a pre-flight assert that fails fast if the required IPs are unset or still <...> placeholders.

Notes for reviewers

  • No real IPs / MACs / secrets in the role; only generic example subnet/gateway/DNS (192.168.1.0/24, 8.8.8.8, 127.0.0.1).
  • The K3s agent install in chroot-setup.sh.j2 is intentionally left unpinned (documented caveat in the guide's K3s server section).
  • The optional Cloudflare WARP nft_reject module preload is framed as out of scope for this base deployment.
  • Includes the bundled Realtek r8125 DKMS driver source (122 KB) used to build the NIC driver in the rootfs.

Test plan

  • pre-commit run --all-files (yamllint / shellcheck / detect-private-key)
  • ansible-lint deploy/ansible/playbooks/pb-pxe-controller.yml
  • ansible-playbook --syntax-check deploy/ansible/playbooks/pb-pxe-controller.yml
  • Dry-run against a PXE controller host; confirm mount-local-disk units land in /srv/nfs/rootfs

Made with Cursor

@Stanley-PH Stanley-PH requested a review from KerwinTsaiii as a code owner May 29, 2026 18:11
Port the pxe_controller Ansible role and pb-pxe-controller.yml playbook
referenced by the Multi-AIPC PXE Netboot deployment guide.

- Add the mount-local-disk.service.j2 / mount-local-disk.sh.j2 agent
  templates (with a .gitignore negation so the "*local*" rule does not drop
  them) that tasks/main.yml, chroot-setup.sh.j2 and k3s-auto-join.service
  depend on.
- Keep all site-specific values operator-supplied: blank root password,
  empty SSH authorized_keys, and empty PXE/k3s server IPs, with a pre-flight
  assert that fails fast if the required IPs are unset or still placeholders.
- Print accurate post-run next steps (no references to non-existent helper
  scripts) and frame the optional Cloudflare WARP module preload as out of
  scope for the base deployment.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants