Files
Sankofa/scripts/verify-vm-configurations.sh
defiQUG c9f6690285 Refactor Proxmox VM deployment configurations and enhance documentation
- Adjusted VM specifications and resource allocations to optimize performance across nodes.
- Updated deployment YAML files to incorporate new configurations and storage types.
- Improved documentation clarity regarding resource usage and deployment strategies, ensuring users have the latest information for efficient VM management.
2025-12-13 04:56:01 -08:00

137 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
# VM Configuration Verification Script
# Verifies that all VMs are properly configured for ML110-01 and R630-01
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
EXAMPLES_DIR="$PROJECT_ROOT/examples/production"
echo "=========================================="
echo "VM Configuration Verification"
echo "=========================================="
echo ""
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
ERRORS=0
WARNINGS=0
# Function to check VM configuration
check_vm() {
local file=$1
local name=$(grep "name:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
local node=$(grep "node:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
local site=$(grep "site:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
local cpu=$(grep "cpu:" "$file" | head -1 | awk '{print $2}')
local memory=$(grep "memory:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
local storage=$(grep "storage:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
# Verify node and site match
if [[ "$node" == "ml110-01" && "$site" != "site-1" ]]; then
echo -e "${RED}ERROR:${NC} $name - Node ml110-01 but site is $site (should be site-1)"
((ERRORS++))
elif [[ "$node" == "r630-01" && "$site" != "site-2" ]]; then
echo -e "${RED}ERROR:${NC} $name - Node r630-01 but site is $site (should be site-2)"
((ERRORS++))
fi
# Check storage configuration
if [[ "$node" == "r630-01" && "$storage" == "local-lvm" ]]; then
# Only Cloudflare Tunnel should use local-lvm on R630-01
if [[ "$name" != "cloudflare-tunnel-vm" ]]; then
echo -e "${YELLOW}WARNING:${NC} $name on r630-01 uses local-lvm (consider ceph-fs for large disks)"
((WARNINGS++))
fi
fi
echo "$name: node=$node, site=$site, cpu=$cpu, memory=$memory, storage=$storage"
}
# Count VMs per node
echo "=== VM Distribution ==="
ML110_COUNT=$(grep -r 'node: "ml110-01"' "$EXAMPLES_DIR" --include="*.yaml" | wc -l)
R630_COUNT=$(grep -r 'node: "r630-01"' "$EXAMPLES_DIR" --include="*.yaml" | wc -l)
TOTAL_COUNT=$(find "$EXAMPLES_DIR" -name "*.yaml" -type f | wc -l)
echo "ML110-01 VMs: $ML110_COUNT"
echo "R630-01 VMs: $R630_COUNT"
echo "Total VMs: $TOTAL_COUNT"
echo ""
# Calculate CPU allocations
echo "=== CPU Allocation Summary ==="
ML110_CPU=0
R630_CPU=0
for file in "$EXAMPLES_DIR"/*.yaml "$EXAMPLES_DIR"/phoenix/*.yaml "$EXAMPLES_DIR"/smom-dbis-138/*.yaml; do
if [[ -f "$file" ]]; then
node=$(grep "node:" "$file" | head -1 | awk '{print $2}' | tr -d '"')
cpu=$(grep "cpu:" "$file" | head -1 | awk '{print $2}')
if [[ -n "$cpu" && "$cpu" =~ ^[0-9]+$ ]]; then
if [[ "$node" == "ml110-01" ]]; then
ML110_CPU=$((ML110_CPU + cpu))
elif [[ "$node" == "r630-01" ]]; then
R630_CPU=$((R630_CPU + cpu))
fi
fi
fi
done
echo "ML110-01 Total CPU: $ML110_CPU cores (5 available)"
if [[ $ML110_CPU -gt 5 ]]; then
echo -e "${YELLOW}WARNING:${NC} ML110-01 CPU allocation ($ML110_CPU) exceeds available (5)"
((WARNINGS++))
else
echo -e "${GREEN}OK:${NC} ML110-01 CPU allocation within capacity"
fi
echo "R630-01 Total CPU: $R630_CPU cores (50 available)"
if [[ $R630_CPU -gt 50 ]]; then
echo -e "${YELLOW}WARNING:${NC} R630-01 CPU allocation ($R630_CPU) exceeds available (50)"
((WARNINGS++))
else
echo -e "${GREEN}OK:${NC} R630-01 CPU allocation within capacity"
fi
echo ""
# Check storage configuration
echo "=== Storage Configuration ==="
CEPH_COUNT=$(grep -r 'storage: "ceph-fs"' "$EXAMPLES_DIR" --include="*.yaml" | wc -l)
LOCAL_COUNT=$(grep -r 'storage: "local-lvm"' "$EXAMPLES_DIR" --include="*.yaml" | wc -l)
echo "Ceph-fs VMs: $CEPH_COUNT"
echo "Local-lvm VMs: $LOCAL_COUNT"
echo ""
# Verify each VM
echo "=== Individual VM Verification ==="
for file in "$EXAMPLES_DIR"/*.yaml "$EXAMPLES_DIR"/phoenix/*.yaml "$EXAMPLES_DIR"/smom-dbis-138/*.yaml; do
if [[ -f "$file" ]]; then
check_vm "$file"
fi
done
echo ""
echo "=========================================="
echo "Verification Complete"
echo "=========================================="
echo "Errors: $ERRORS"
echo "Warnings: $WARNINGS"
if [[ $ERRORS -eq 0 && $WARNINGS -eq 0 ]]; then
echo -e "${GREEN}✓ All configurations are correct!${NC}"
exit 0
elif [[ $ERRORS -eq 0 ]]; then
echo -e "${YELLOW}⚠ Configurations are correct with minor warnings${NC}"
exit 0
else
echo -e "${RED}✗ Configuration errors found${NC}"
exit 1
fi