Files
Sankofa/scripts/check-vm-100-before-start.sh

160 lines
4.5 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Check VM 100 configuration before starting
# Run on Proxmox node: root@ml110-01
VMID=100
echo "=== Pre-Start Check for VM $VMID ==="
echo ""
# 1. VM Status
echo "1. VM Status:"
qm status $VMID 2>&1
echo ""
# 2. Boot Configuration
echo "2. Boot Configuration:"
BOOT_CONFIG=$(qm config $VMID 2>&1 | grep -E "^boot:|^scsi0:|^ide2:")
if [ -z "$BOOT_CONFIG" ]; then
echo " ⚠️ No boot configuration found"
else
echo "$BOOT_CONFIG" | while read line; do
echo " $line"
done
fi
echo ""
# 3. Disk Configuration
echo "3. Disk Configuration:"
DISK_CONFIG=$(qm config $VMID 2>&1 | grep -E "^scsi0:|^scsi1:")
if [ -z "$DISK_CONFIG" ]; then
echo " ⚠️ No disk configuration found"
else
echo "$DISK_CONFIG" | while read line; do
echo " $line"
# Check if disk exists
if echo "$line" | grep -q "local-lvm:vm-$VMID-disk"; then
DISK_NAME=$(echo "$line" | sed -n 's/.*local-lvm:\(vm-[0-9]*-disk-[0-9]*\).*/\1/p')
if [ -n "$DISK_NAME" ]; then
if lvs | grep -q "$DISK_NAME"; then
DISK_SIZE=$(lvs | grep "$DISK_NAME" | awk '{print $4}')
echo " ✅ Disk exists: $DISK_NAME ($DISK_SIZE)"
else
echo " ⚠️ Disk not found: $DISK_NAME"
fi
fi
fi
done
fi
echo ""
# 4. Check for Image Import
echo "4. Checking for imported image:"
IMPORTED_DISKS=$(lvs | grep "vm-$VMID-disk" | awk '{print $1}')
if [ -z "$IMPORTED_DISKS" ]; then
echo " ⚠️ No imported disks found for VM $VMID"
echo " ⚠️ VM may have blank disk - will not boot!"
else
echo " ✅ Found disks:"
echo "$IMPORTED_DISKS" | while read disk; do
SIZE=$(lvs | grep "$disk" | awk '{print $4}')
echo " - $disk ($SIZE)"
done
fi
echo ""
# 5. Cloud-init Configuration
echo "5. Cloud-init Configuration:"
CLOUDINIT_CONFIG=$(qm config $VMID 2>&1 | grep -E "^ide2:|^ciuser:|^ipconfig0:")
if [ -z "$CLOUDINIT_CONFIG" ]; then
echo " ⚠️ No cloud-init configuration found"
else
echo "$CLOUDINIT_CONFIG" | while read line; do
echo " $line"
done
fi
echo ""
# 6. Network Configuration
echo "6. Network Configuration:"
NETWORK_CONFIG=$(qm config $VMID 2>&1 | grep -E "^net0:")
if [ -z "$NETWORK_CONFIG" ]; then
echo " ⚠️ No network configuration found"
else
echo " $NETWORK_CONFIG"
fi
echo ""
# 7. Guest Agent
echo "7. Guest Agent Configuration:"
AGENT_CONFIG=$(qm config $VMID 2>&1 | grep -E "^agent:")
if [ -z "$AGENT_CONFIG" ]; then
echo " ⚠️ Guest agent not configured"
else
echo " $AGENT_CONFIG"
fi
echo ""
# 8. Summary and Recommendations
echo "=== Summary ==="
echo ""
# Check critical issues
ISSUES=0
# Check if boot order is set
if ! qm config $VMID 2>&1 | grep -q "^boot:"; then
echo "⚠️ ISSUE: Boot order not set"
ISSUES=$((ISSUES + 1))
fi
# Check if scsi0 disk exists and has data
SCSI0_DISK=$(qm config $VMID 2>&1 | grep "^scsi0:" | sed -n 's/.*local-lvm:\(vm-[0-9]*-disk-[0-9]*\).*/\1/p')
if [ -n "$SCSI0_DISK" ]; then
if ! lvs | grep -q "$SCSI0_DISK"; then
echo "⚠️ ISSUE: scsi0 disk not found: $SCSI0_DISK"
ISSUES=$((ISSUES + 1))
else
# Check disk size (should be > 0)
DISK_SIZE_RAW=$(lvs --units g | grep "$SCSI0_DISK" | awk '{print $4}' | sed 's/g//')
if [ -n "$DISK_SIZE_RAW" ] && [ "$(echo "$DISK_SIZE_RAW < 1" | bc 2>/dev/null || echo 0)" = "1" ]; then
echo "⚠️ ISSUE: scsi0 disk appears empty (< 1GB)"
ISSUES=$((ISSUES + 1))
fi
fi
else
echo "⚠️ ISSUE: scsi0 disk not configured"
ISSUES=$((ISSUES + 1))
fi
# Check if image was imported
if [ -z "$IMPORTED_DISKS" ]; then
echo "⚠️ ISSUE: No image imported - VM will not boot"
ISSUES=$((ISSUES + 1))
fi
if [ $ISSUES -eq 0 ]; then
echo "✅ No critical issues found"
echo ""
echo "VM appears ready to start. Run:"
echo " qm start $VMID"
else
echo ""
echo "⚠️ Found $ISSUES critical issue(s)"
echo ""
echo "Do NOT start the VM until these are resolved!"
echo ""
echo "Possible fixes:"
echo "1. If image not imported, check if image exists:"
echo " find /var/lib/vz/template/iso -name 'ubuntu-22.04-cloud.img'"
echo ""
echo "2. If boot order not set:"
echo " qm set $VMID --boot order=scsi0"
echo ""
echo "3. If disk not attached:"
echo " qm set $VMID --scsi0 local-lvm:vm-$VMID-disk-X,format=qcow2"
fi
echo ""