Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- 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
This commit is contained in:
168
scripts/start-smom-vms.sh
Executable file
168
scripts/start-smom-vms.sh
Executable file
@@ -0,0 +1,168 @@
|
||||
#!/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 "$@"
|
||||
|
||||
Reference in New Issue
Block a user