- 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
169 lines
4.6 KiB
Bash
Executable File
169 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# start-smom-vms.sh
|
|
# Start all SMOM-DBIS-138 VMs via Proxmox API
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log() {
|
|
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $*"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] ✅${NC} $*"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] ⚠️${NC} $*"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ❌${NC} $*"
|
|
}
|
|
|
|
# Get VM details
|
|
get_vm_details() {
|
|
local vm_name=$1
|
|
local vm_id
|
|
local node
|
|
local state
|
|
|
|
vm_id=$(kubectl get proxmoxvm "${vm_name}" -n default -o jsonpath='{.status.vmId}' 2>/dev/null || echo "")
|
|
node=$(kubectl get proxmoxvm "${vm_name}" -n default -o jsonpath='{.spec.forProvider.node}' 2>/dev/null || echo "")
|
|
state=$(kubectl get proxmoxvm "${vm_name}" -n default -o jsonpath='{.status.state}' 2>/dev/null || echo "")
|
|
|
|
if [ -z "${vm_id}" ] || [ "${vm_id}" = "0" ]; then
|
|
echo ""
|
|
return 1
|
|
fi
|
|
|
|
echo "${vm_id}|${node}|${state}"
|
|
}
|
|
|
|
# Start VM via Proxmox API (requires direct Proxmox access)
|
|
start_vm_direct() {
|
|
local vm_id=$1
|
|
local node=$2
|
|
local proxmox_host=$3
|
|
|
|
log "Starting VM ${vm_id} on ${node} via ${proxmox_host}..."
|
|
|
|
# This would require Proxmox API credentials
|
|
# For now, we'll provide instructions
|
|
log_warning "Direct Proxmox API access required"
|
|
log "To start VM manually:"
|
|
log " ssh root@${proxmox_host} 'qm start ${vm_id}'"
|
|
log " Or use Proxmox web UI: https://${proxmox_host}:8006"
|
|
log ""
|
|
}
|
|
|
|
main() {
|
|
log "=========================================="
|
|
log "SMOM-DBIS-138 VM Startup Guide"
|
|
log "=========================================="
|
|
log ""
|
|
log "VMs are created but in 'stopped' state."
|
|
log "They need to be started to receive IP addresses."
|
|
log ""
|
|
|
|
# Check VM status
|
|
local vms=(
|
|
"nginx-proxy-vm"
|
|
"cloudflare-tunnel-vm"
|
|
"smom-validator-01"
|
|
"smom-validator-02"
|
|
"smom-validator-03"
|
|
"smom-validator-04"
|
|
"smom-sentry-01"
|
|
"smom-sentry-02"
|
|
"smom-sentry-03"
|
|
"smom-sentry-04"
|
|
"smom-rpc-node-01"
|
|
"smom-rpc-node-02"
|
|
"smom-rpc-node-03"
|
|
"smom-rpc-node-04"
|
|
"smom-services"
|
|
"smom-blockscout"
|
|
"smom-monitoring"
|
|
"smom-management"
|
|
)
|
|
|
|
log "VM Status:"
|
|
log "----------"
|
|
|
|
local site1_vms=()
|
|
local site2_vms=()
|
|
|
|
for vm in "${vms[@]}"; do
|
|
local details
|
|
details=$(get_vm_details "${vm}" 2>/dev/null || echo "")
|
|
|
|
if [ -n "${details}" ]; then
|
|
IFS='|' read -r vm_id node state <<< "${details}"
|
|
|
|
if [ "${node}" = "ml110-01" ]; then
|
|
site1_vms+=("${vm_id}")
|
|
log " ${vm}: VMID=${vm_id}, Node=${node}, State=${state}"
|
|
elif [ "${node}" = "r630-01" ]; then
|
|
site2_vms+=("${vm_id}")
|
|
log " ${vm}: VMID=${vm_id}, Node=${node}, State=${state}"
|
|
fi
|
|
else
|
|
log_warning " ${vm}: Not found or no VMID"
|
|
fi
|
|
done
|
|
|
|
log ""
|
|
log "=========================================="
|
|
log "Start VMs via Proxmox"
|
|
log "=========================================="
|
|
log ""
|
|
log "Option 1: Via Proxmox Web UI"
|
|
log " 1. Open: https://192.168.11.10:8006 (Site 1)"
|
|
log " 2. Navigate to each VM"
|
|
log " 3. Click 'Start'"
|
|
log ""
|
|
log "Option 2: Via SSH/Command Line"
|
|
log ""
|
|
log "Site 1 (ml110-01) - 192.168.11.10:"
|
|
for vm_id in "${site1_vms[@]}"; do
|
|
log " ssh root@192.168.11.10 'qm start ${vm_id}'"
|
|
done
|
|
log ""
|
|
log "Site 2 (r630-01) - 192.168.11.11:"
|
|
for vm_id in "${site2_vms[@]}"; do
|
|
log " ssh root@192.168.11.11 'qm start ${vm_id}'"
|
|
done
|
|
log ""
|
|
log "Option 3: Wait for Auto-Start"
|
|
log " The Crossplane controller may start VMs automatically."
|
|
log " Monitor with: kubectl get proxmoxvm -A -w"
|
|
log ""
|
|
log "=========================================="
|
|
log "After Starting VMs"
|
|
log "=========================================="
|
|
log ""
|
|
log "1. Wait for VMs to boot (2-5 minutes)"
|
|
log "2. Check IP addresses:"
|
|
log " ./scripts/get-smom-vm-ips.sh"
|
|
log ""
|
|
log "3. Verify deployment:"
|
|
log " ./scripts/verify-deployment.sh"
|
|
log ""
|
|
log "4. Proceed with configuration:"
|
|
log " See: docs/smom-dbis-138-next-steps.md"
|
|
log ""
|
|
}
|
|
|
|
main "$@"
|
|
|