feat(proxmox): add datanet NIC provisioning script for k8s+ultix VMs

Adds second virtio NIC (net1) to all k8s nodes and ultix VMs, bridged to
the VLAN 1000 storage network. Handles both bridge names (datanet on most
hosts, storagenet on tsys6). IPs tracked in phpIPAM (10.100.100.10-19).
Related: [#396]

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
This commit is contained in:
2026-08-07 11:35:35 -05:00
parent 457d78d4f0
commit 776afc212d
+96
View File
@@ -0,0 +1,96 @@
#!/bin/bash
###############################################################################
# add-datanet-nics.sh
#
# Adds a second virtio NIC (net1) to all k8s + ultix VMs, bridged to the
# storage/datanet network (VLAN 1000). Records the assigned IP in phpIPAM.
#
# Runs from the workstation — uses tests/remote.sh to reach each hypervisor.
# Hot-adds the NIC (no VM downtime). Guest-side IP config must be done
# separately (the guest OS needs the IP configured on the new interface).
#
# Usage:
# bash add-datanet-nics.sh # add NICs (hot-add, no reboot)
# bash add-datanet-nics.sh --status # show current state only
#
# IP allocations (phpIPAM VPTechOps, subnet 10.100.100.0/24):
# .10 = cnode1 (102/tsys1)
# .11 = cnode2 (705/tsys7)
# .12 = cnode3 (603/tsys6)
# .13 = wnode-tsys3 (313/tsys3)
# .14 = wnode-tsys5 (500/tsys5)
# .15 = wnode-tsys6 (601/tsys6)
# .16 = wnode-tsys7 (701/tsys7)
# .17 = wnode-tsys9 (905/tsys9)
# .18 = ultix-streaming (5111/tsys5)
# .19 = ultix-offstage (5112/tsys5)
#
# Related: Redmine [#396]
###############################################################################
set -euo pipefail
# VM definitions: VMID HOST BRIDGE IP HOSTNAME
VMS=(
"102 tsys1 datanet 10.100.100.10 pfv-k8s-cnode1"
"705 tsys7 datanet 10.100.100.11 pfv-k8s-cnode2"
"603 tsys6 storagenet 10.100.100.12 pfv-k8s-cnode3"
"313 tsys3 datanet 10.100.100.13 pfv-k8s-wnode-tsys3"
"500 tsys5 datanet 10.100.100.14 pfv-k8s-wnode-tsys5"
"601 tsys6 storagenet 10.100.100.15 pfv-k8s-wnode-tsys6"
"701 tsys7 datanet 10.100.100.16 pfv-k8s-wnode-tsys7"
"905 tsys9 datanet 10.100.100.17 pfv-k8s-wnode-tsys9"
"5111 tsys5 datanet 10.100.100.18 ultix-streaming"
"5112 tsys5 datanet 10.100.100.19 ultix-offstage"
)
ACTION="${1:-add}"
echo "==================================================================="
echo " add-datanet-nics — [#396]"
echo " mode: ${ACTION}"
echo "==================================================================="
echo ""
for entry in "${VMS[@]}"; do
read -r vmid host bridge ip hostname <<< "$entry"
prox_host="pfv-${host}"
echo "--- ${hostname} (VM ${vmid} on ${prox_host}) ---"
if [ "$ACTION" = "--status" ]; then
# Show current NIC state
PROX_HOST="$prox_host" bash tests/remote.sh prox \
"qm config ${vmid} 2>/dev/null | grep -E '^net|^name'" 2>&1
echo ""
continue
fi
# Check if net1 already exists
existing=$(PROX_HOST="$prox_host" bash tests/remote.sh prox \
"qm config ${vmid} 2>/dev/null | grep '^net1'" 2>&1 || true)
if [ -n "$existing" ]; then
echo " net1 already exists: ${existing}"
echo " Skipping."
echo ""
continue
fi
# Hot-add net1 bridged to the storage network
echo " Adding net1 (bridge=${bridge}, IP=${ip})..."
if PROX_HOST="$prox_host" bash tests/remote.sh prox \
"qm set ${vmid} -net1 virtio,bridge=${bridge}" 2>&1; then
echo " NIC added. Verify with: qm config ${vmid} | grep net1"
else
echo " FAILED — check error above"
fi
echo ""
done
if [ "$ACTION" != "--status" ]; then
echo "==================================================================="
echo " NICs added. Guest-side IP config still needed."
echo " Each guest needs the IP configured on the new interface."
echo " IPs are allocated in phpIPAM (VPTechOps / 10.100.100.0/24)."
echo "==================================================================="
fi