Repository navigation
Conversation
phoenix@pve exists on gandalf with PhoenixBuilder on /vms, range, local and vmbr0, PhoenixIsoCleanup on local and PVEAuditor on the node. Nothing is granted on local-lvm or vmbr1. The Kali 2026.2 installer is on local, checked against the pinned hash, and kali_iso_file defaults to it. No token yet: it is made at the build. Refs #421. Refs #790. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The runbook unnecessarily grants Gandalf datastore deletion and storage-configuration privileges for a Kali build that generates no answer disc.
2 open issues
What changed in this PR
Prepares gandalf for building the range’s tpl-kali template from phoenix. The template build and its verification remain outstanding under #790.
Changes:
- Sets the Kali ISO default to the installer staged on
gandalf. - Documents applied permissions, separate API credentials, CA trust, and the
rangestorage override. - Records the preparation in the changelog and links the template build into the roadmap.
| File | Description |
|---|---|
packer/variables.pkr.hcl |
Updates the Kali ISO default and explanatory comment. |
docs/runbooks/build-the-lab-templates.md |
Documents gandalf permissions and build setup. |
docs/roadmap.md |
Links the attack VM’s template-build dependency. |
docs/changelog.md |
Records completed host preparation and remaining verification. |
Review effort: Balanced
| | `PhoenixBuilder` | `/vms` | creating and templating 902 | | ||
| | `PhoenixBuilder` | `/storage/range` | the template's disks, on the range pool ([ADR-0096](../adr/0096-fit-ifrits-range-disk-as-a-sata-ssd-in-the-tinys-bay.md)) | | ||
| | `PhoenixBuilder` | `/storage/local` | the installer ISO, and the answer disc Packer uploads | | ||
| | `PhoenixIsoCleanup` | `/storage/local` | deleting that disc afterwards, as on `Saruman` | |
There was a problem hiding this comment.
Revoked: PhoenixIsoCleanup is removed from phoenix@pve on gandalf's local and the role deleted there. The runbook table and the changelog entry now say why.
🤖 Addressed by Claude Code
| `https://10.0.30.30:8006/api2/json`. Source that file instead of | ||
| `phoenix.env` for this build. Rewriting `phoenix.env` would point the next | ||
| `Saruman` build at `gandalf`. Then trust `gandalf`'s CA: relay |
There was a problem hiding this comment.
Fixed: §5 step 2 now sources phoenix.env (for PKR_VAR_build_password) and then gandalf.env to override the three API variables, with the one-line command.
🤖 Addressed by Claude Code
Kali's build uploads no answer disc, so Datastore.Allocate on gandalf's local bought nothing. The grant and the role are removed on gandalf. Refs #790. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>


What changed
gandalfis ready fortpl-kali's build (build-the-lab-templates.md§5, step 2'sgandalfhalf).phoenix@pvenow exists ongandalf, withPhoenixBuilderon/vms,/storage/range,/storage/localandvmbr0, andPVEAuditoron/nodes/gandalf. APhoenixIsoCleanupgrant onlocalwas revoked after review, because Kali's build uploads no answer disc. The Kali 2026.2 installer is ongandalf'slocal, andkali_iso_filenow defaults to it. The runbook records the grants and howphoenixshould holdgandalf's token. The roadmap and changelog are updated.Why
Refs #421 and #790. The roadmap names §5, the attack VM, as next. It clones
tpl-kali, which Packer builds fromphoenixthroughgandalf's own API. That API had no user, no role and no ISO.Blast radius
gandalfonly. It has no guests. The new user has no token yet, so nothing can authenticate as it. Its grants leave outlocal-lvm(ADR-0096 keeps range disks off the M.2) andvmbr1(the range NIC belongs to the clone). They grant nothing under/nodesbeyond audit, so the token cannot touch the host firewall. The role leaves outSaruman'sPool.*.secrets/*.sops.yaml. No token was made. The runbook has the operator make it at the build, so its secret goes straight tophoenix.Verification
Ran on
gandalf, as root:The API certificate: issuer
PVE Cluster Manager CA, SANs include10.0.30.30, no custompveproxy-ssl.pem. Nothing was reissued.pveum acl list | grep phoenixshows the five grants above.pveum role listshowsPhoenixBuilderwith the jumpbox list plusVM.GuestAgent.Audit, and noPhoenixIsoCleanup.pvesh get /nodesreadsgandalf.The ISO was downloaded from cdimage.kali.org and passed
sha256sum -cagainst the hash pinned inscripts/collect-iso-store-state.sh.pvesm list local --content isolistslocal:iso/kali-linux-2026.2-installer-amd64.iso.Not run: the build, the smoke test and the
-forcerebuild. Those are Build tpl-kali (VMID 902) on ifrit once it exists #790's, fromphoenix.scripts/check_docs.pypasses.make validateexits 0 with 43 checks skipped, because this host has no docker daemon and no pipx. That includes packer validate, shellcheck and markdownlint.make validatepasses (it passes with 43 skipped; see above)Deployed to the lab and confirmed working (
gandalf's user, grants and ISO, read back)Docs updated (
docs/, service README, ordocs/roadmap.md)🤖 Generated with Claude Code