Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
110 lines
3.1 KiB
Bash
Executable File
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 ""
|