Files
proxmox/scripts/proxmox/assign-vlan-to-container.sh
defiQUG b3a8fe4496
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
chore: sync all changes to Gitea
- Config, docs, scripts, and backup manifests
- Submodule refs unchanged (m = modified content in submodules)

Made-with: Cursor
2026-03-02 11:37:34 -08:00

110 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Load IP configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
# Assign VLAN to Proxmox Container
# Usage: ./scripts/proxmox/assign-vlan-to-container.sh <CTID> <VLAN_ID> [HOST]
set -e
if [ $# -lt 2 ]; then
echo "Usage: $0 <CTID> <VLAN_ID> [HOST]"
echo ""
echo "Examples:"
echo " $0 100 110 # Assign container 100 to VLAN 110 (BESU-VAL)"
echo " $0 200 120 ml110 # Assign container 200 to VLAN 120 on ml110"
echo ""
echo "VLAN Reference:"
echo " 11 - MGMT-LAN"
echo " 110 - BESU-VAL"
echo " 111 - BESU-SEN"
echo " 112 - BESU-RPC"
echo " 120 - BLOCKSCOUT"
echo " 121 - CACTI"
echo " 130 - CCIP-OPS"
echo " 132 - CCIP-COMMIT"
echo " 133 - CCIP-EXEC"
echo " 134 - CCIP-RMN"
echo " 140 - FABRIC"
echo " 141 - FIREFLY"
echo " 150 - INDY"
echo " 160 - SANKOFA-SVC"
echo " 200 - PHX-SOV-SMOM"
echo " 201 - PHX-SOV-ICCC"
echo " 202 - PHX-SOV-DBIS"
echo " 203 - PHX-SOV-AR"
exit 1
fi
CTID=$1
VLAN_ID=$2
HOST=${3:-"${PROXMOX_HOST_ML110:-192.168.11.10}"} # Default to ml110
echo "🔧 Assigning VLAN to Container"
echo ""
echo "📋 Configuration:"
echo " Container ID: $CTID"
echo " VLAN ID: $VLAN_ID"
echo " Host: $HOST"
echo ""
# Validate VLAN ID
VALID_VLANS=(11 110 111 112 120 121 130 132 133 134 140 141 150 160 200 201 202 203)
if [[ ! " ${VALID_VLANS[@]} " =~ " ${VLAN_ID} " ]]; then
echo "⚠️ Warning: VLAN $VLAN_ID is not in the standard VLAN plan"
echo " Continuing anyway..."
fi
# Check if container exists
echo "🔍 Checking container $CTID on $HOST..."
if ! ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@$HOST "pct list | grep -q '^$CTID '" 2>/dev/null; then
echo "❌ Container $CTID not found on $HOST"
exit 1
fi
echo " ✅ Container found"
echo ""
# Get current network configuration
echo "📋 Current network configuration:"
CURRENT_NET=$(ssh root@$HOST "pct config $CTID | grep '^net0:'" 2>/dev/null || echo "net0: not configured")
echo " $CURRENT_NET"
echo ""
# Assign VLAN
echo "🔄 Assigning VLAN $VLAN_ID to container $CTID..."
ssh root@$HOST "pct set $CTID -net0 name=eth0,bridge=vmbr0,tag=$VLAN_ID" 2>&1
if [ $? -eq 0 ]; then
echo " ✅ VLAN $VLAN_ID assigned successfully"
else
echo " ❌ Failed to assign VLAN"
exit 1
fi
# Verify configuration
echo ""
echo "🔍 Verifying configuration..."
NEW_NET=$(ssh root@$HOST "pct config $CTID | grep '^net0:'" 2>/dev/null)
echo " New configuration: $NEW_NET"
if echo "$NEW_NET" | grep -q "tag=$VLAN_ID"; then
echo " ✅ VLAN assignment verified"
else
echo " ⚠️ VLAN assignment may not have taken effect"
fi
echo ""
echo "✅ Container $CTID assigned to VLAN $VLAN_ID"
echo ""
echo "💡 Next Steps:"
echo " 1. Restart container if needed: ssh root@$HOST 'pct restart $CTID'"
echo " 2. Verify network connectivity from container"
echo " 3. Check IP assignment (DHCP or static)"
echo ""