From 776afc212d09b58781630cb1d7f6e6bc4687820f Mon Sep 17 00:00:00 2001 From: reachableceo Date: Fri, 7 Aug 2026 11:35:35 -0500 Subject: [PATCH] feat(proxmox): add datanet NIC provisioning script for k8s+ultix VMs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- proxmox/perf/scripts/add-datanet-nics.sh | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 proxmox/perf/scripts/add-datanet-nics.sh diff --git a/proxmox/perf/scripts/add-datanet-nics.sh b/proxmox/perf/scripts/add-datanet-nics.sh new file mode 100644 index 0000000..e36cff6 --- /dev/null +++ b/proxmox/perf/scripts/add-datanet-nics.sh @@ -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