mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The offset came from the spoke's position in a sorted list, so a host that sorts earlier renumbered every member behind it. `wg syncconf` carries keys and peers onto a live interface and never its address, so a renumbered member keeps answering on the old address while the peers and the inventory have moved to the new one -- and the address it gave up can be handed to a new member while the old owner still holds it. The planner now reuses the addresses already on disk and allocates only an unseen member, from the lowest free offset. A value outside the subnet, a duplicate, and the hub's own offset are refused, so a mirrored host_vars cannot hand a spoke the hub's address. Rotation keeps addresses: it replaces identities, not addresses. The routing assertions re-planned the mesh and compared the result with itself, so a writer that stored the mesh subnet in place of the routed range would have passed; they now read the entry off disk, which is what the role reads.