Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ docstring gives: it is a record, not a claim about now.

## 2026-11-09

- **`tpl-kali`'s build now removes its own eth0 DHCP stanza before
templating.** The preseed writes `/etc/network/interfaces.d/eth0` so the
build has a network ([#790](https://github.com/Gerrrt/HomeLab/issues/790)),
and its comment said a clone's cloud-init configured its network on top.
That was wrong for a static clone. On `gandalf`, a throwaway clone of 902
at `172.30.30.199` on `vmbr1` raised both that stanza and cloud-init's
static one. dhcpcd got no lease, fell back to `169.254.x.x`, added
`default dev eth0 scope link`, and failed `build-the-playground.md` §8
check four ([#421](https://github.com/Gerrrt/HomeLab/issues/421)).
`packer/kali.pkr.hcl`'s first provisioner now deletes the file beside
`cloud-init clean`, for 902 and 910 alike. The installer's `ens18` stanza
stays, because no `ens18` exists on Kali. `packer-smoke.sh`,
`make-attack-vm.sh` and `garuda`'s module all set `ipconfig0` to DHCP, so
their `eth0` still comes up through cloud-init. Neither template has been
rebuilt with the change yet; until it is, both still carry the stanza.

- **ADR-0089's trigger 3 has fired: Wiki.js 3.x is stable, and the move is
[#1339](https://github.com/Gerrrt/HomeLab/issues/1339).** `requarks/wiki`
published `3.0.1`, its first stable 3.x release, on 2026-11-01. Five more
Expand Down
9 changes: 9 additions & 0 deletions docs/runbooks/build-the-lab-templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,15 @@ not from a second disc.
> with 0 failed units and no account expiring at the epoch, the check
> [#1196](https://github.com/Gerrrt/HomeLab/issues/1196) owed 902.

The preseed writes `/etc/network/interfaces.d/eth0`, a DHCP stanza, so the
build has a network. The build's first provisioner deletes it before
templating, so a clone's network is only what cloud-init writes from its
`ipconfigN`. A template built before that change still holds the stanza. A
static-only clone of one raises DHCP beside its static address, and with no
DHCP server dhcpcd adds a `169.254.x.x` address and a link-local default
route ([`build-the-playground.md`](build-the-playground.md) §8). Rebuild 902
and 910 with this section and §5b to clear it.

1. Admit the guest to that port on `phoenix` for the length of the build. If
`ufw` is active, run `sudo ufw allow from 10.0.30.0/24 to any port 8800 proto tcp`,
and delete the rule afterwards. Debian's build (§4) needs this step and
Expand Down
12 changes: 12 additions & 0 deletions packer/kali.pkr.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,18 @@ build {
"ln -sf /dev/null /etc/systemd/system-generators/systemd-sslh-generator",
"ln -sf /usr/lib/systemd/system/cloud-init.target /etc/systemd/system/multi-user.target.wants/cloud-init.target",
"apt-get clean",
# The preseed's eth0 DHCP stanza is the build's network only. Left in
# the template, ifupdown raised it beside cloud-init's static stanza on
# a static-only clone, dhcpcd got no lease on vmbr1, fell back to
# 169.254.x.x and added `default dev eth0 scope link`: a target with a
# default route, which build-the-playground.md §8 check four fails
# (found 2026-11-09 on gandalf, a throwaway clone of 902). Every clone
# gets a NoCloud drive, so cloud-init writes each NIC's stanza, DHCP
# included. Removing the file does not take down the running build's
# eth0. The installer's ens18 stanza in /etc/network/interfaces stays:
# no ens18 exists on Kali (eth0 naming, see the preseed), so ifupdown
# never raises it.
"rm -f /etc/network/interfaces.d/eth0",
"rm -f /etc/ssh/ssh_host_*",
"cloud-init clean --logs --machine-id",
]
Expand Down
5 changes: 4 additions & 1 deletion packer/kali/preseed.cfg.pkrtpl
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ d-i grub-installer/bootdev string default
# it. With only an ens18 stanza, eth0 never came up, the guest had no address, and
# Packer timed out waiting for SSH (#790, two proof builds on Saruman, 2026-10-08).
# interfaces sources interfaces.d, so this adds eth0 without editing the
# installer's file. A clone's cloud-init configures its own network on top.
# installer's file. It is the build's network only: kali.pkr.hcl's first
# provisioner removes it before templating, because a clone that kept it raised
# DHCP beside cloud-init's static stanza and got a link-local default route.
# A clone's network is cloud-init's alone.
#
# The chage loop clears a bogus account-expiry (shadow field 8 == 1, i.e. the
# epoch, 1970-01-02) that Kali's package postinsts leave on service accounts
Expand Down
Loading