Files
proxmox/smom-dbis-138-proxmox/scripts/deployment/deploy-all.sh

180 lines
5.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Main deployment orchestration script for SMOM-DBIS-138 on Proxmox VE
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
source "$PROJECT_ROOT/lib/common.sh"
# Parse command line arguments
SKIP_BESU="${SKIP_BESU:-false}"
SKIP_SERVICES="${SKIP_SERVICES:-false}"
SKIP_MONITORING="${SKIP_MONITORING:-false}"
SKIP_CONFIG="${SKIP_CONFIG:-false}"
while [[ $# -gt 0 ]]; do
case $1 in
--skip-besu)
SKIP_BESU=true
shift
;;
--skip-services)
SKIP_SERVICES=true
shift
;;
--skip-monitoring)
SKIP_MONITORING=true
shift
;;
--skip-config)
SKIP_CONFIG=true
shift
;;
--help)
echo "Usage: $0 [OPTIONS]"
echo ""
echo "Options:"
echo " --skip-besu Skip Besu nodes deployment"
echo " --skip-services Skip services deployment"
echo " --skip-monitoring Skip monitoring stack deployment"
echo " --skip-config Skip configuration updates"
echo " --help Show this help message"
exit 0
;;
*)
log_error "Unknown option: $1"
exit 1
;;
esac
done
# Load configuration
load_config
# Initialize rollback tracking
if command_exists init_rollback 2>/dev/null; then
init_rollback "$PROJECT_ROOT/logs/rollback-$(date +%Y%m%d-%H%M%S).log"
set_rollback_trap
fi
log_info "========================================="
log_info "SMOM-DBIS-138 Proxmox Deployment"
log_info "========================================="
log_info ""
# Check prerequisites
log_info "Checking prerequisites..."
if ! command_exists pct; then
error_exit "pct command not found. This script must be run on Proxmox host."
fi
if [[ $EUID -ne 0 ]]; then
error_exit "This script must be run as root"
fi
# Ensure OS template exists before starting deployment
log_info "Checking OS template..."
ensure_os_template "${CONTAINER_OS_TEMPLATE:-local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst}" || {
error_exit "OS template not available. Please download it first: pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.zst"
}
# Create log directory
mkdir -p "$PROJECT_ROOT/logs"
LOG_FILE="$PROJECT_ROOT/logs/deployment-$(date +%Y%m%d-%H%M%S).log"
log_info "Deployment log: $LOG_FILE"
exec > >(tee -a "$LOG_FILE") 2>&1
log_success "Prerequisites checked"
# Deploy Besu nodes
if [[ "$SKIP_BESU" != "true" ]]; then
log_info ""
log_info "=== Deploying Besu Nodes ==="
"$SCRIPT_DIR/deploy-besu-nodes.sh" || {
log_error "Besu nodes deployment failed"
exit 1
}
else
log_info "Skipping Besu nodes deployment (--skip-besu)"
fi
# Deploy services
if [[ "$SKIP_SERVICES" != "true" ]]; then
log_info ""
log_info "=== Deploying Services ==="
if [[ -f "$SCRIPT_DIR/deploy-services.sh" ]]; then
"$SCRIPT_DIR/deploy-services.sh" || {
log_error "Services deployment failed"
exit 1
}
else
log_warn "Services deployment script not found, skipping"
fi
log_info ""
log_info "=== Deploying Hyperledger Services ==="
if [[ -f "$SCRIPT_DIR/deploy-hyperledger-services.sh" ]]; then
"$SCRIPT_DIR/deploy-hyperledger-services.sh" || {
log_warn "Hyperledger services deployment had issues, continuing..."
}
else
log_warn "Hyperledger services deployment script not found, skipping"
fi
else
log_info "Skipping services deployment (--skip-services)"
fi
# Deploy monitoring
if [[ "$SKIP_MONITORING" != "true" ]]; then
log_info ""
log_info "=== Deploying Monitoring Stack ==="
if [[ -f "$SCRIPT_DIR/deploy-monitoring.sh" ]]; then
"$SCRIPT_DIR/deploy-monitoring.sh" || {
log_error "Monitoring deployment failed"
exit 1
}
else
log_warn "Monitoring deployment script not found, skipping"
fi
else
log_info "Skipping monitoring deployment (--skip-monitoring)"
fi
# Update configurations
if [[ "$SKIP_CONFIG" != "true" ]]; then
log_info ""
log_info "=== Updating Configurations ==="
if [[ -f "$SCRIPT_DIR/network/update-static-nodes.sh" ]]; then
"$SCRIPT_DIR/network/update-static-nodes.sh" || {
log_warn "Static nodes update failed, continuing..."
}
fi
else
log_info "Skipping configuration updates (--skip-config)"
fi
log_info ""
log_success "========================================="
log_success "Deployment Completed Successfully!"
log_success "========================================="
# Clean up rollback file on successful completion
if command_exists cleanup_rollback 2>/dev/null; then
clear_rollback_trap
cleanup_rollback
fi
log_info ""
log_info "Next Steps:"
log_info "1. Review deployment inventory: $PROJECT_ROOT/config/inventory.conf"
log_info "2. Copy genesis.json and configuration files to containers"
log_info "3. Copy validator keys to validator containers"
log_info "4. Update static-nodes.json with all node IPs"
log_info "5. Start Besu services in containers"
log_info "6. Verify network connectivity between nodes"
log_info "7. Check logs: $LOG_FILE"
log_info ""