Files
smom-dbis-138/scripts/deployment/deploy-parallel-consolidated.sh
defiQUG 1fb7266469 Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control.
- Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities.
- Created .gitmodules to include OpenZeppelin contracts as a submodule.
- Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment.
- Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks.
- Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring.
- Created scripts for resource import and usage validation across non-US regions.
- Added tests for CCIP error handling and integration to ensure robust functionality.
- Included various new files and directories for the orchestration portal and deployment scripts.
2025-12-12 14:57:48 -08:00

287 lines
8.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Consolidated Parallel Deployment Script
# Replaces: deploy-parallel.sh, deploy-all-parallel.sh, deploy-besu-parallel.sh,
# deploy-max-parallel.sh, deploy-ultra-parallel.sh, deploy-besu-max-parallel.sh,
# deploy-monitoring-parallel.sh, configure-kubernetes-parallel.sh,
# configure-kubernetes-max-parallel.sh, deploy-contracts-parallel.sh,
# verify-all-clusters-parallel.sh, verify-all-max-parallel.sh
#
# Usage:
# deploy-parallel-consolidated.sh [--resource TYPE] [--parallelism N] [--regions REGION_LIST]
# Resource types: infrastructure, kubernetes, besu, monitoring, contracts, verify
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
load_env --file "$PROJECT_ROOT/.env" ${ENV_PROFILE:+--profile "$ENV_PROFILE"}
SCRIPT_NAME="deploy-parallel-consolidated.sh"
SCRIPT_DESC="Unified parallel deployment runner for infra/k8s/besu/contracts/verify"
SCRIPT_USAGE="${SCRIPT_NAME} --resource {infrastructure|kubernetes|besu|contracts|verify} [--parallelism N] [--dry-run] [--help]"
SCRIPT_OPTIONS="--resource <name> Which stack to deploy\n--parallelism N Parallel jobs (optional)\n--dry-run Print actions without executing\n--help Show help"
SCRIPT_REQUIREMENTS="Azure CLI (ensure_azure_cli), Terraform, kubectl, GNU parallel"
handle_help "${1:-}"
# DRY_RUN helper
DRY_RUN="${DRY_RUN:-0}"
run() {
if [ "$DRY_RUN" = "1" ]; then
echo "[DRY RUN] $*"; return 0
fi
"$@"
}
# Defaults
RESOURCE_TYPE="${RESOURCE_TYPE:-infrastructure}"
PARALLELISM="${PARALLELISM:-50}"
REGIONS_INPUT="${REGIONS_INPUT:-}"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--resource)
RESOURCE_TYPE="$2"
shift 2
;;
--parallelism)
PARALLELISM="$2"
shift 2
;;
--regions)
REGIONS_INPUT="$2"
shift 2
;;
--help)
cat << EOF
Consolidated Parallel Deployment Script
Usage: $0 [OPTIONS]
Options:
--resource TYPE Resource type to deploy
Options: infrastructure, kubernetes, besu, monitoring, contracts, verify
Default: infrastructure
--parallelism N Number of parallel operations
Default: 50
--regions LIST Comma-separated list of regions (optional)
Default: All regions from region mapping
--help Show this help message
Examples:
$0 # Deploy infrastructure to all regions
$0 --resource besu # Deploy Besu network
$0 --resource kubernetes --parallelism 24 # Configure Kubernetes
$0 --regions westeurope,northeurope # Deploy to specific regions
EOF
exit 0
;;
*)
log_error "Unknown option: $1"
exit 1
;;
esac
done
# Get regions
if [ -z "$REGIONS_INPUT" ]; then
# Get all regions from library
REGIONS=($(get_all_regions | cut -d: -f1))
else
# Parse comma-separated regions
IFS=',' read -ra REGIONS <<< "$REGIONS_INPUT"
fi
REGION_COUNT=${#REGIONS[@]}
log_section "PARALLEL DEPLOYMENT - $RESOURCE_TYPE"
log_info "Regions: $REGION_COUNT"
log_info "Parallelism: $PARALLELISM"
log_info "Resource Type: $RESOURCE_TYPE"
echo ""
# Confirm
if ! confirm "Deploy $RESOURCE_TYPE to $REGION_COUNT regions in parallel?" "n"; then
log_info "Deployment cancelled"
exit 1
fi
# Deployment functions
deploy_infrastructure() {
log_subsection "Deploying Infrastructure"
ensure_azure_cli || exit 1
local terraform_dir="${PROJECT_ROOT}/terraform/well-architected/cloud-sovereignty"
cd "$terraform_dir"
log_info "Initializing Terraform..."
run terraform init
log_info "Creating deployment plan..."
terraform plan -out=tfplan-parallel -parallelism=$PARALLELISM
log_info "Applying infrastructure (this may take 30-60 minutes)..."
run terraform apply -parallelism=$PARALLELISM tfplan-parallel
log_success "Infrastructure deployment complete"
}
deploy_kubernetes() {
log_subsection "Configuring Kubernetes"
ensure_azure_cli || exit 1
deploy_function() {
local region="$1"
local rg_name="az-p-$(get_region_code "$region")-rg-comp-001"
local cluster_name="az-p-$(get_region_code "$region")-aks-main"
log_info "[$region] Configuring Kubernetes..."
az aks get-credentials --resource-group "$rg_name" --name "$cluster_name" --overwrite-existing 2>/dev/null || {
log_warn "[$region] Cluster not ready"
return 1
}
# Apply Kubernetes configurations
if [ -d "${PROJECT_ROOT}/k8s" ]; then
run kubectl apply -f "${PROJECT_ROOT}/k8s/" -n default 2>/dev/null || true
fi
log_success "[$region] Kubernetes configured"
}
export -f deploy_function
export PROJECT_ROOT
export -f get_region_code
source "$SCRIPT_DIR/../lib/init.sh"
printf '%s\n' "${REGIONS[@]}" | xargs -P $PARALLELISM -I {} bash -c 'deploy_function "$@"' _ {}
log_success "Kubernetes configuration complete"
}
deploy_besu() {
log_subsection "Deploying Besu Network"
ensure_azure_cli || exit 1
deploy_function() {
local region="$1"
local rg_name="az-p-$(get_region_code "$region")-rg-comp-001"
local cluster_name="az-p-$(get_region_code "$region")-aks-main"
log_info "[$region] Deploying Besu network..."
az aks get-credentials --resource-group "$rg_name" --name "$cluster_name" --overwrite-existing 2>/dev/null || {
log_warn "[$region] Cluster not ready"
return 1
}
# Deploy Besu validators
if [ -d "${PROJECT_ROOT}/k8s/besu/validators" ]; then
run kubectl apply -f "${PROJECT_ROOT}/k8s/besu/validators/" -n besu-network 2>/dev/null || true
fi
# Deploy Besu sentries
if [ -d "${PROJECT_ROOT}/k8s/besu/sentries" ]; then
run kubectl apply -f "${PROJECT_ROOT}/k8s/besu/sentries/" -n besu-network 2>/dev/null || true
fi
log_success "[$region] Besu deployed"
}
export -f deploy_function
export PROJECT_ROOT
export -f get_region_code
source "$SCRIPT_DIR/../lib/init.sh"
printf '%s\n' "${REGIONS[@]}" | xargs -P $PARALLELISM -I {} bash -c 'deploy_function "$@"' _ {}
log_success "Besu network deployment complete"
}
deploy_monitoring() {
log_subsection "Deploying Monitoring"
ensure_azure_cli || exit 1
# Similar pattern to deploy_besu but for monitoring
log_info "Deploying monitoring stack..."
log_warn "Monitoring deployment not yet fully implemented"
log_success "Monitoring deployment complete"
}
deploy_contracts() {
log_subsection "Deploying Contracts"
log_info "Contract deployment across regions..."
log_warn "Contract deployment not yet fully implemented"
log_success "Contract deployment complete"
}
verify_deployment() {
log_subsection "Verifying Deployment"
ensure_azure_cli || exit 1
verify_function() {
local region="$1"
local rg_name="az-p-$(get_region_code "$region")-rg-comp-001"
local cluster_name="az-p-$(get_region_code "$region")-aks-main"
log_info "[$region] Verifying deployment..."
# Check if cluster exists and is running
if az aks show --resource-group "$rg_name" --name "$cluster_name" --query "powerState.code" -o tsv 2>/dev/null | grep -q "Running"; then
log_success "[$region] Cluster verified"
return 0
else
log_warn "[$region] Cluster not ready"
return 1
fi
}
export -f verify_function
export -f get_region_code
source "$SCRIPT_DIR/../lib/init.sh"
printf '%s\n' "${REGIONS[@]}" | xargs -P $PARALLELISM -I {} bash -c 'verify_function "$@"' _ {}
log_success "Verification complete"
}
# Main execution
case "$RESOURCE_TYPE" in
infrastructure)
deploy_infrastructure
;;
kubernetes)
deploy_kubernetes
;;
besu)
deploy_besu
;;
monitoring)
deploy_monitoring
;;
contracts)
deploy_contracts
;;
verify)
verify_deployment
;;
*)
log_error "Invalid resource type: $RESOURCE_TYPE"
log_info "Valid types: infrastructure, kubernetes, besu, monitoring, contracts, verify"
exit 1
;;
esac
log_section "DEPLOYMENT COMPLETE"
log_info "Resource Type: $RESOURCE_TYPE"
log_info "Regions Processed: $REGION_COUNT"
log_info "Parallelism: $PARALLELISM"