Bind-mount K3s agent data, node identity, and kubelet dirs from NVMe so container image cache and node registration survive reboots on the diskless netboot nodes. Includes K3s binary download, agent systemd service, DHCP hostname resolution, and open-iscsi for Longhorn iSCSI support.
29 lines
814 B
Bash
29 lines
814 B
Bash
#!/bin/bash
|
|
# Set hostname from DHCP lease
|
|
# Runs before k3s-agent to ensure proper node name
|
|
|
|
set -euo pipefail
|
|
|
|
log() { echo "[hostname] $*"; logger -t set-hostname "$*"; }
|
|
|
|
# Wait for DHCP lease
|
|
MAX_WAIT=60
|
|
for i in $(seq 1 $MAX_WAIT); do
|
|
# Check for lease files from systemd-networkd
|
|
for lease in /run/systemd/netif/leases/*; do
|
|
if [ -f "$lease" ]; then
|
|
HOSTNAME=$(grep -oP '^HOSTNAME=\K.*' "$lease" 2>/dev/null || true)
|
|
if [ -n "$HOSTNAME" ]; then
|
|
log "Found hostname in DHCP lease: $HOSTNAME"
|
|
hostnamectl set-hostname "$HOSTNAME"
|
|
log "Hostname set to: $(hostname)"
|
|
exit 0
|
|
fi
|
|
fi
|
|
done
|
|
sleep 1
|
|
done
|
|
|
|
log "Warning: No DHCP hostname found after ${MAX_WAIT}s, using default"
|
|
exit 0
|