- Add comprehensive database migrations (001-024) for schema evolution - Enhance API schema with expanded type definitions and resolvers - Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth - Implement new services: AI optimization, billing, blockchain, compliance, marketplace - Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage) - Update Crossplane provider with enhanced VM management capabilities - Add comprehensive test suite for API endpoints and services - Update frontend components with improved GraphQL subscriptions and real-time updates - Enhance security configurations and headers (CSP, CORS, etc.) - Update documentation and configuration files - Add new CI/CD workflows and validation scripts - Implement design system improvements and UI enhancements
159 lines
4.6 KiB
Bash
Executable File
159 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Verify and start VM 100 on Proxmox node
|
|
# Run this script on Proxmox node: root@ml110-01
|
|
|
|
set -e
|
|
|
|
VMID=100
|
|
VM_NAME="basic-vm-001"
|
|
|
|
echo "=========================================="
|
|
echo "VM 100 Verification and Start Script"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Step 1: Check VM status
|
|
echo "Step 1: Checking VM status..."
|
|
echo "--------------------------------------"
|
|
qm status $VMID
|
|
echo ""
|
|
|
|
# Step 2: Check boot order
|
|
echo "Step 2: Checking boot order..."
|
|
echo "--------------------------------------"
|
|
BOOT_ORDER=$(qm config $VMID | grep '^boot:' || echo "")
|
|
if [ -z "$BOOT_ORDER" ]; then
|
|
echo "⚠️ Boot order not set - fixing..."
|
|
qm set $VMID --boot order=scsi0
|
|
echo "✅ Boot order set to: order=scsi0"
|
|
else
|
|
echo "✅ Boot order: $BOOT_ORDER"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 3: Check disk configuration
|
|
echo "Step 3: Checking disk configuration..."
|
|
echo "--------------------------------------"
|
|
SCSI0=$(qm config $VMID | grep '^scsi0:' || echo "")
|
|
if [ -z "$SCSI0" ]; then
|
|
echo "❌ ERROR: scsi0 disk not configured!"
|
|
echo " This is critical - VM cannot boot without disk"
|
|
exit 1
|
|
else
|
|
echo "✅ Disk configured: $SCSI0"
|
|
|
|
# Extract disk name
|
|
DISK_NAME=$(echo "$SCSI0" | sed -n 's/.*local-lvm:\(vm-[0-9]*-disk-[0-9]*\).*/\1/p')
|
|
if [ -n "$DISK_NAME" ]; then
|
|
echo " Checking if disk exists: $DISK_NAME"
|
|
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 " ❌ ERROR: Disk $DISK_NAME not found in LVM!"
|
|
echo " Image import may have failed"
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# Step 4: Check cloud-init
|
|
echo "Step 4: Checking cloud-init configuration..."
|
|
echo "--------------------------------------"
|
|
IDE2=$(qm config $VMID | grep '^ide2:' || echo "")
|
|
CIUSER=$(qm config $VMID | grep '^ciuser:' || echo "")
|
|
if [ -z "$IDE2" ]; then
|
|
echo "⚠️ Cloud-init drive not configured - fixing..."
|
|
qm set $VMID --ide2 local-lvm:cloudinit
|
|
echo "✅ Cloud-init drive configured"
|
|
else
|
|
echo "✅ Cloud-init drive: $IDE2"
|
|
fi
|
|
|
|
if [ -z "$CIUSER" ]; then
|
|
echo "⚠️ Cloud-init user not configured - fixing..."
|
|
qm set $VMID --ciuser admin
|
|
echo "✅ Cloud-init user configured"
|
|
else
|
|
echo "✅ Cloud-init user: $CIUSER"
|
|
fi
|
|
|
|
IPCONFIG=$(qm config $VMID | grep '^ipconfig0:' || echo "")
|
|
if [ -z "$IPCONFIG" ]; then
|
|
echo "⚠️ IP config not set - fixing..."
|
|
qm set $VMID --ipconfig0 ip=dhcp
|
|
echo "✅ IP config set to DHCP"
|
|
else
|
|
echo "✅ IP config: $IPCONFIG"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 5: Check network
|
|
echo "Step 5: Checking network configuration..."
|
|
echo "--------------------------------------"
|
|
NET0=$(qm config $VMID | grep '^net0:' || echo "")
|
|
if [ -z "$NET0" ]; then
|
|
echo "⚠️ Network not configured - fixing..."
|
|
qm set $VMID --net0 virtio,bridge=vmbr0
|
|
echo "✅ Network configured"
|
|
else
|
|
echo "✅ Network: $NET0"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 6: Check guest agent
|
|
echo "Step 6: Checking guest agent..."
|
|
echo "--------------------------------------"
|
|
AGENT=$(qm config $VMID | grep '^agent:' || echo "")
|
|
if [ -z "$AGENT" ]; then
|
|
echo "⚠️ Guest agent not enabled - fixing..."
|
|
qm set $VMID --agent 1
|
|
echo "✅ Guest agent enabled"
|
|
else
|
|
echo "✅ Guest agent: $AGENT"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 7: Summary
|
|
echo "=========================================="
|
|
echo "Verification Summary"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Configuration checks:"
|
|
echo " ✅ Boot order: $(qm config $VMID | grep '^boot:' || echo 'Not set')"
|
|
echo " ✅ Disk: $(qm config $VMID | grep '^scsi0:' | head -1 || echo 'Not configured')"
|
|
echo " ✅ Cloud-init: $(qm config $VMID | grep '^ide2:' || echo 'Not configured')"
|
|
echo " ✅ Network: $(qm config $VMID | grep '^net0:' || echo 'Not configured')"
|
|
echo " ✅ Guest agent: $(qm config $VMID | grep '^agent:' || echo 'Not enabled')"
|
|
echo ""
|
|
|
|
# Step 8: Start VM
|
|
echo "=========================================="
|
|
echo "Starting VM $VMID..."
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Current status:"
|
|
qm status $VMID
|
|
echo ""
|
|
echo "Starting VM..."
|
|
qm start $VMID
|
|
echo ""
|
|
echo "Waiting 5 seconds for VM to initialize..."
|
|
sleep 5
|
|
echo ""
|
|
echo "VM status after start:"
|
|
qm status $VMID
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "VM $VMID started!"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Monitor with:"
|
|
echo " watch -n 2 'qm status $VMID'"
|
|
echo ""
|
|
echo "Or from Kubernetes:"
|
|
echo " kubectl get proxmoxvm $VM_NAME -w"
|
|
echo ""
|
|
|