- 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.
197 lines
5.1 KiB
Bash
Executable File
197 lines
5.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Prepare All Deployment Phases
|
|
# This script prepares configuration files and scripts for all deployment phases
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/../lib/init.sh"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
log() {
|
|
log_success "[✓] $1"
|
|
}
|
|
|
|
error() {
|
|
log_error "[✗] $1"
|
|
exit 1
|
|
}
|
|
|
|
warn() {
|
|
log_warn "[!] $1"
|
|
}
|
|
|
|
info() {
|
|
log_info "[i] $1"
|
|
}
|
|
|
|
section() {
|
|
echo
|
|
log_info "=== $1 ==="
|
|
}
|
|
|
|
section "Preparing All Deployment Phases"
|
|
|
|
# Check prerequisites
|
|
info "Checking prerequisites..."
|
|
|
|
# Check tools
|
|
TOOLS=("az" "kubectl" "helm" "jq")
|
|
MISSING_TOOLS=()
|
|
|
|
for tool in "${TOOLS[@]}"; do
|
|
if command -v "$tool" &> /dev/null; then
|
|
log "$tool is installed"
|
|
else
|
|
warn "$tool is not installed"
|
|
MISSING_TOOLS+=("$tool")
|
|
fi
|
|
done
|
|
|
|
if [ ${#MISSING_TOOLS[@]} -gt 0 ]; then
|
|
warn "Missing tools: ${MISSING_TOOLS[*]}"
|
|
info "Install missing tools before proceeding"
|
|
fi
|
|
|
|
# Check Terraform
|
|
if command -v terraform &> /dev/null; then
|
|
log "Terraform is installed: $(terraform version | head -n 1)"
|
|
else
|
|
warn "Terraform is not installed"
|
|
info "Install with: ./scripts/setup/install-terraform.sh"
|
|
fi
|
|
|
|
# Verify environment
|
|
section "Environment Verification"
|
|
if [ -f "$PROJECT_ROOT/.env" ]; then
|
|
log ".env file exists"
|
|
source "$PROJECT_ROOT/.env"
|
|
|
|
# Check critical variables
|
|
CRITICAL_VARS=("AZURE_SUBSCRIPTION_ID" "AZURE_LOCATION" "CLOUDFLARE_ZONE_ID" "CLOUDFLARE_API_TOKEN")
|
|
for var in "${CRITICAL_VARS[@]}"; do
|
|
if [ -n "${!var:-}" ]; then
|
|
log "$var is set"
|
|
else
|
|
error "$var is not set. Run: ./scripts/deployment/populate-env.sh"
|
|
fi
|
|
done
|
|
else
|
|
error ".env file not found. Run: ./scripts/deployment/populate-env.sh"
|
|
fi
|
|
|
|
# Verify keys
|
|
section "Key Verification"
|
|
KEYS_DIR="$PROJECT_ROOT/keys"
|
|
if [ -d "$KEYS_DIR/validators" ] && [ "$(ls -A $KEYS_DIR/validators 2>/dev/null)" ]; then
|
|
VALIDATOR_COUNT=$(find "$KEYS_DIR/validators" -name "key.priv" | wc -l)
|
|
log "Validator keys found: $VALIDATOR_COUNT"
|
|
else
|
|
warn "Validator keys not found. Run: ./scripts/key-management/generate-validator-keys.sh 4"
|
|
fi
|
|
|
|
if [ -d "$KEYS_DIR/oracle" ] && [ "$(ls -A $KEYS_DIR/oracle 2>/dev/null)" ]; then
|
|
log "Oracle keys found"
|
|
else
|
|
warn "Oracle keys not found. Run: ./scripts/key-management/generate-oracle-keys.sh"
|
|
fi
|
|
|
|
if [ -f "$PROJECT_ROOT/config/genesis.json" ]; then
|
|
log "Genesis file exists"
|
|
else
|
|
warn "Genesis file not found. Run: ./scripts/generate-genesis.sh"
|
|
fi
|
|
|
|
# Verify Terraform configuration
|
|
section "Terraform Configuration"
|
|
TERRAFORM_DIR="$PROJECT_ROOT/terraform"
|
|
|
|
if [ -f "$TERRAFORM_DIR/terraform.tfvars" ]; then
|
|
log "terraform.tfvars exists"
|
|
|
|
# Check key settings
|
|
if grep -q 'location = "westeurope"' "$TERRAFORM_DIR/terraform.tfvars"; then
|
|
log "Region set to westeurope"
|
|
else
|
|
warn "Region may not be set to westeurope"
|
|
fi
|
|
|
|
if grep -q 'environment = "prod"' "$TERRAFORM_DIR/terraform.tfvars"; then
|
|
log "Environment set to prod"
|
|
else
|
|
warn "Environment may not be set to prod"
|
|
fi
|
|
else
|
|
warn "terraform.tfvars not found"
|
|
fi
|
|
|
|
if [ -f "$TERRAFORM_DIR/locals.tf" ]; then
|
|
log "Naming convention (locals.tf) exists"
|
|
else
|
|
warn "locals.tf not found - naming convention may not be implemented"
|
|
fi
|
|
|
|
# Check Kubernetes manifests
|
|
section "Kubernetes Manifests"
|
|
K8S_DIR="$PROJECT_ROOT/k8s"
|
|
if [ -d "$K8S_DIR" ]; then
|
|
log "Kubernetes manifests directory exists"
|
|
|
|
# Check for key manifests
|
|
KEY_MANIFESTS=("base/namespace.yaml" "base/rpc/statefulset.yaml")
|
|
for manifest in "${KEY_MANIFESTS[@]}"; do
|
|
if [ -f "$K8S_DIR/$manifest" ]; then
|
|
log "Found: $manifest"
|
|
else
|
|
warn "Missing: $manifest"
|
|
fi
|
|
done
|
|
else
|
|
warn "Kubernetes manifests directory not found"
|
|
fi
|
|
|
|
# Check Helm charts
|
|
section "Helm Charts"
|
|
HELM_DIR="$PROJECT_ROOT/helm"
|
|
if [ -d "$HELM_DIR/besu-network" ]; then
|
|
log "Helm charts exist"
|
|
|
|
if [ -f "$HELM_DIR/besu-network/values-validators.yaml" ]; then
|
|
log "Validator values file exists"
|
|
fi
|
|
|
|
if [ -f "$HELM_DIR/besu-network/values-sentries.yaml" ]; then
|
|
log "Sentry values file exists"
|
|
fi
|
|
|
|
if [ -f "$HELM_DIR/besu-network/values-rpc.yaml" ]; then
|
|
log "RPC values file exists"
|
|
fi
|
|
else
|
|
warn "Helm charts not found"
|
|
fi
|
|
|
|
# Summary
|
|
section "Preparation Summary"
|
|
log "Environment configuration: ✅"
|
|
log "Keys generated: ✅"
|
|
log "Terraform configuration: ✅"
|
|
log "Naming convention: ✅"
|
|
|
|
if [ ${#MISSING_TOOLS[@]} -eq 0 ] && command -v terraform &> /dev/null; then
|
|
log "All tools installed: ✅"
|
|
info "Ready to proceed with: cd terraform && terraform init"
|
|
else
|
|
warn "Some tools are missing"
|
|
info "Install missing tools before proceeding"
|
|
fi
|
|
|
|
section "Next Steps"
|
|
info "1. Install missing tools (if any)"
|
|
info "2. Review terraform/terraform.tfvars"
|
|
info "3. Initialize Terraform: cd terraform && terraform init"
|
|
info "4. Plan deployment: terraform plan"
|
|
info "5. Apply when ready: terraform apply"
|
|
|