Compare commits

...

2 Commits

Author SHA1 Message Date
c331091cdd Add isc-dhcp-server to example debootstrap script
Debian 13+ no longer include isc-dhcp-server (or any DHCP client it
seems) in their default minimal stack. This can cause cloud-init to fail
early and render newly provsiioned VMs unbootable. We add it to the
example here for posterity.
2026-03-01 21:49:52 -05:00
dfc8d598cb Fix errors when overwriting DHCP leases
Ensure we remove any existing leases for the MAC first, before adding a
new entry for that MAC. Otherwise what dnsmasq returns will not be valid
and this can cause CloudInit bootstrap errors.
2026-03-01 21:10:35 -05:00
2 changed files with 20 additions and 15 deletions

View File

@@ -485,6 +485,7 @@ class VMBuilderScript(VMBuilder):
"acpid",
"acpi-support-base",
"wget",
"isc-dhcp-server", # required for cloud-init on Debian 13+ where this is no longer standard
]
# We need to know our root disk for later GRUB-ing

View File

@@ -130,6 +130,8 @@ def read_lease_database(zk_conn, zk_leases_key):
def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clientid):
if not hostname:
hostname = ""
try:
zk_conn.delete("{}/{}".format(zk_leases_key, macaddr), recursive=True)
transaction = zk_conn.transaction()
transaction.create("{}/{}".format(zk_leases_key, macaddr), "".encode("ascii"))
transaction.create(
@@ -145,6 +147,8 @@ def add_lease(zk_conn, zk_leases_key, expiry, macaddr, ipaddr, hostname, clienti
"{}/{}/clientid".format(zk_leases_key, macaddr), clientid.encode("ascii")
)
transaction.commit()
except Exception as e:
print(f"FATAL: {e}")
def del_lease(zk_conn, zk_leases_key, macaddr, expiry):