135 lines
4.3 KiB
Bash
135 lines
4.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Master deployment script for DBIS Core Banking System
|
|
# Orchestrates deployment of all services in correct order
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
|
|
# Source utilities
|
|
source "$PROJECT_ROOT/dbis_core/scripts/utils/common.sh"
|
|
|
|
# Load configuration
|
|
load_config
|
|
|
|
log_info "========================================="
|
|
log_info "DBIS Core - Complete Deployment"
|
|
log_info "========================================="
|
|
log_info ""
|
|
|
|
# Check if running as root
|
|
check_root
|
|
if ! command_exists pct; then
|
|
error_exit "This script must be run on Proxmox host (pct command not found)"
|
|
fi
|
|
|
|
# Deployment flags
|
|
DEPLOY_POSTGRESQL="${DEPLOY_POSTGRESQL:-true}"
|
|
DEPLOY_REDIS="${DEPLOY_REDIS:-true}"
|
|
DEPLOY_API="${DEPLOY_API:-true}"
|
|
DEPLOY_FRONTEND="${DEPLOY_FRONTEND:-true}"
|
|
|
|
# Track deployment status
|
|
DEPLOYMENT_SUCCESS=true
|
|
FAILED_SERVICES=()
|
|
|
|
# Function to deploy service with error handling
|
|
deploy_service() {
|
|
local service_name="$1"
|
|
local script_path="$2"
|
|
|
|
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Deploying: $service_name"
|
|
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
if [[ ! -f "$script_path" ]]; then
|
|
log_error "Deployment script not found: $script_path"
|
|
DEPLOYMENT_SUCCESS=false
|
|
FAILED_SERVICES+=("$service_name (script not found)")
|
|
return 1
|
|
fi
|
|
|
|
if bash "$script_path"; then
|
|
log_success "$service_name deployed successfully"
|
|
return 0
|
|
else
|
|
log_error "$service_name deployment failed"
|
|
DEPLOYMENT_SUCCESS=false
|
|
FAILED_SERVICES+=("$service_name")
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Phase 1: Foundation Services
|
|
log_info "Phase 1: Deploying Foundation Services"
|
|
log_info ""
|
|
|
|
if [[ "$DEPLOY_POSTGRESQL" == "true" ]]; then
|
|
deploy_service "PostgreSQL" "$SCRIPT_DIR/deploy-postgresql.sh" || {
|
|
log_warn "PostgreSQL deployment failed, but continuing..."
|
|
}
|
|
log_info ""
|
|
fi
|
|
|
|
if [[ "$DEPLOY_REDIS" == "true" ]]; then
|
|
deploy_service "Redis" "$SCRIPT_DIR/deploy-redis.sh" || {
|
|
log_warn "Redis deployment failed, but continuing..."
|
|
}
|
|
log_info ""
|
|
fi
|
|
|
|
# Wait for foundation services to be ready
|
|
log_info "Waiting for foundation services to be ready..."
|
|
sleep 10
|
|
|
|
# Phase 2: Application Services
|
|
log_info "Phase 2: Deploying Application Services"
|
|
log_info ""
|
|
|
|
if [[ "$DEPLOY_API" == "true" ]]; then
|
|
deploy_service "API" "$SCRIPT_DIR/deploy-api.sh" || {
|
|
log_warn "API deployment failed, but continuing..."
|
|
}
|
|
log_info ""
|
|
fi
|
|
|
|
if [[ "$DEPLOY_FRONTEND" == "true" ]]; then
|
|
deploy_service "Frontend" "$SCRIPT_DIR/deploy-frontend.sh" || {
|
|
log_warn "Frontend deployment failed, but continuing..."
|
|
}
|
|
log_info ""
|
|
fi
|
|
|
|
# Deployment Summary
|
|
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info "Deployment Summary"
|
|
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
log_info ""
|
|
|
|
if [[ "$DEPLOYMENT_SUCCESS" == "true" ]]; then
|
|
log_success "All services deployed successfully!"
|
|
log_info ""
|
|
log_info "Service Endpoints:"
|
|
log_info " PostgreSQL: ${DBIS_POSTGRES_PRIMARY_IP:-192.168.11.100}:5432"
|
|
log_info " Redis: ${DBIS_REDIS_IP:-192.168.11.120}:6379"
|
|
log_info " API: http://${DBIS_API_PRIMARY_IP:-192.168.11.150}:${DBIS_API_PORT:-3000}"
|
|
log_info " Frontend: http://${DBIS_FRONTEND_IP:-192.168.11.130}"
|
|
log_info ""
|
|
log_info "Next Steps:"
|
|
log_info "1. Run database migrations: ./scripts/deployment/configure-database.sh"
|
|
log_info "2. Check service status: ./scripts/management/status.sh"
|
|
log_info "3. Test API health: curl http://${DBIS_API_PRIMARY_IP:-192.168.11.150}:${DBIS_API_PORT:-3000}/health"
|
|
else
|
|
log_error "Deployment completed with errors!"
|
|
log_info ""
|
|
log_info "Failed Services:"
|
|
for service in "${FAILED_SERVICES[@]}"; do
|
|
log_error " - $service"
|
|
done
|
|
log_info ""
|
|
log_info "Please review the errors above and retry failed deployments."
|
|
exit 1
|
|
fi
|
|
|