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.
This commit is contained in:
136
scripts/verify-vm-configurations.sh
Executable file
136
scripts/verify-vm-configurations.sh
Executable file
@@ -0,0 +1,136 @@
|
||||
#!/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
|
||||
|
||||
Reference in New Issue
Block a user