Files
proxmox/rpc-translator-138/verify-node-ready.sh
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

168 lines
5.2 KiB
Bash
Executable File

#!/bin/bash
# Verify Proxmox node is ready for LXC container deployment
# Usage: ./verify-node-ready.sh [node-name]
set -e
NODE="${1:-r630-01}"
echo "========================================="
echo "Verifying Node: $NODE"
echo "========================================="
echo ""
# Check if pvesh is available
if ! command -v pvesh >/dev/null 2>&1; then
echo "❌ Error: pvesh command not found"
echo "This script must be run on a Proxmox host or with API access configured"
exit 1
fi
# Check node exists and is online
echo "1. Checking node status..."
if ! pvesh get /nodes/$NODE/status >/dev/null 2>&1; then
echo "❌ Node '$NODE' not found or not accessible"
echo ""
echo "Available nodes:"
pvesh get /nodes --output-format json 2>/dev/null | \
grep -o '"node":"[^"]*"' | cut -d'"' -f4 | sort | sed 's/^/ - /'
exit 1
fi
NODE_STATUS=$(pvesh get /nodes/$NODE/status --output-format json 2>/dev/null)
NODE_STATUS_TEXT=$(echo "$NODE_STATUS" | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
if [ "$NODE_STATUS_TEXT" != "online" ]; then
echo "❌ Node is not online (status: $NODE_STATUS_TEXT)"
exit 1
fi
echo "✅ Node is online"
echo ""
# Check storage
echo "2. Checking storage..."
STORAGE_JSON=$(pvesh get /nodes/$NODE/storage --output-format json 2>/dev/null)
STORAGE_LIST=$(echo "$STORAGE_JSON" | grep -o '"storage":"[^"]*"' | cut -d'"' -f4 | sort)
if echo "$STORAGE_LIST" | grep -q "local-lvm\|local"; then
echo "✅ Storage available:"
echo "$STORAGE_LIST" | sed 's/^/ - /'
else
echo "❌ No suitable storage found (need local-lvm or local)"
exit 1
fi
echo ""
# Check for LXC templates
echo "3. Checking LXC templates..."
TEMPLATES=$(pvesh get /nodes/$NODE/storage --output-format json 2>/dev/null | \
grep -o '"content":"[^"]*vztmpl[^"]*"' | \
sed 's/.*"content":"\([^"]*\)".*/\1/' | sort -u || echo "")
if [ -z "$TEMPLATES" ]; then
echo "⚠️ No LXC templates found"
echo ""
echo "Please download templates in Proxmox UI:"
echo " 1. Datacenter > Storage > local (or local-lvm)"
echo " 2. Click 'Templates' tab"
echo " 3. Click 'Download Templates'"
echo " 4. Select and download: ubuntu-22.04-standard (or similar)"
echo ""
else
echo "✅ Available templates:"
echo "$TEMPLATES" | sed 's/^/ - /' | head -10
if echo "$TEMPLATES" | grep -qi "ubuntu.*22.04"; then
echo ""
echo "✅ Ubuntu 22.04 template available (recommended)"
else
echo ""
echo "⚠️ Ubuntu 22.04 template not found, but other templates available"
fi
fi
echo ""
# Check network
echo "4. Checking network configuration..."
BRIDGES=$(pvesh get /nodes/$NODE/network --output-format json 2>/dev/null | \
grep -o '"iface":"vmbr[^"]*"' | cut -d'"' -f4 | sort || echo "")
if echo "$BRIDGES" | grep -q "vmbr0"; then
echo "✅ Network bridge vmbr0 found"
echo "$BRIDGES" | sed 's/^/ - /'
else
echo "⚠️ vmbr0 not found, but other bridges available:"
echo "$BRIDGES" | sed 's/^/ - /'
echo "Note: Scripts assume vmbr0, adjust if needed"
fi
echo ""
# Check available resources
echo "5. Checking available resources..."
NODE_RESOURCES=$(pvesh get /nodes/$NODE/status --output-format json 2>/dev/null)
MAXMEM=$(echo "$NODE_RESOURCES" | grep -o '"maxmem":[0-9]*' | cut -d':' -f2)
MAXDISK=$(echo "$NODE_RESOURCES" | grep -o '"maxdisk":[0-9]*' | cut -d':' -f2)
MEM=$(echo "$NODE_RESOURCES" | grep -o '"mem":[0-9]*' | cut -d':' -f2)
DISK=$(echo "$NODE_RESOURCES" | grep -o '"disk":[0-9]*' | cut -d':' -f2)
if [ -n "$MAXMEM" ] && [ -n "$MEM" ]; then
MEM_FREE=$((MAXMEM - MEM))
MEM_FREE_GB=$((MEM_FREE / 1024 / 1024))
echo " Memory: ${MEM_FREE_GB}GB free"
# Required: 2GB + 2GB + 2GB = 6GB for 3 containers
if [ $MEM_FREE_GB -lt 6 ]; then
echo "⚠️ Warning: Less than 6GB free (recommended: 6GB+ for 3 containers)"
else
echo "✅ Sufficient memory available"
fi
fi
if [ -n "$MAXDISK" ] && [ -n "$DISK" ]; then
DISK_FREE=$((MAXDISK - DISK))
DISK_FREE_GB=$((DISK_FREE / 1024 / 1024 / 1024))
echo " Disk: ${DISK_FREE_GB}GB free"
# Required: 10GB + 20GB + 20GB = 50GB for 3 containers
if [ $DISK_FREE_GB -lt 50 ]; then
echo "⚠️ Warning: Less than 50GB free (recommended: 50GB+ for 3 containers)"
else
echo "✅ Sufficient disk space available"
fi
fi
echo ""
# Check existing containers on target VMIDs
echo "6. Checking VMID availability..."
declare -a REQUIRED_VMIDS=(106 107 108)
CONFLICTS=0
for VMID in "${REQUIRED_VMIDS[@]}"; do
if pvesh get /nodes/$NODE/qemu/$VMID/config >/dev/null 2>&1 || \
pvesh get /nodes/$NODE/lxc/$VMID/config >/dev/null 2>&1; then
echo "⚠️ VMID $VMID already exists on $NODE"
CONFLICTS=$((CONFLICTS + 1))
else
echo "✅ VMID $VMID is available"
fi
done
if [ $CONFLICTS -gt 0 ]; then
echo ""
echo "⚠️ Warning: $CONFLICTS VMID(s) already exist"
echo " Deployment script will skip existing VMIDs"
fi
echo ""
# Summary
echo "========================================="
echo "Verification Summary"
echo "========================================="
echo "Node: $NODE"
echo "Status: ✅ Ready for container deployment"
echo ""
echo "Next steps:"
echo "1. Run deployment script: ./deploy-supporting-services.sh $NODE"
echo "2. Or manually create containers using pct create command"
echo "3. See DEPLOYMENT.md for detailed configuration steps"