Files
smom-dbis-138/scripts/vm-deployment/deploy-vm-network.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

98 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Deploy Besu network on VMs/VMSS across multiple regions
# This script orchestrates VM deployment using Terraform
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/init.sh"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Configuration
REGIONS=("eastus" "westus" "westeurope")
VALIDATOR_COUNT=2
SENTRY_COUNT=2
RPC_COUNT=2
USE_VMSS=false
log_success "Deploying Besu network on VMs..."
# Check prerequisites
if ! command -v terraform &> /dev/null; then
log_error "Error: Terraform not found. Please install Terraform."
exit 1
fi
if ! command -v az &> /dev/null; then
log_error "Error: Azure CLI not found. Please install Azure CLI."
exit 1
fi
# Check if logged in to Azure
if ! az account show &> /dev/null; then
log_error "Error: Not logged in to Azure. Please run 'az login'."
exit 1
fi
# Check for SSH public key
if [ -z "$SSH_PUBLIC_KEY" ]; then
if [ -f ~/.ssh/id_rsa.pub ]; then
SSH_PUBLIC_KEY=$(cat ~/.ssh/id_rsa.pub)
log_warn "Using SSH key from ~/.ssh/id_rsa.pub"
else
log_error "Error: SSH public key not found. Set SSH_PUBLIC_KEY environment variable or create ~/.ssh/id_rsa.pub"
exit 1
fi
fi
# Initialize Terraform
log_warn "Initializing Terraform..."
cd "$PROJECT_ROOT/terraform"
terraform init
# Create terraform.tfvars for VM deployment
cat > terraform.tfvars.vm <<EOF
vm_deployment_enabled = true
vm_regions = ${REGIONS[@]}
validator_vm_count = $VALIDATOR_COUNT
sentry_vm_count = $SENTRY_COUNT
rpc_vm_count = $RPC_COUNT
use_vmss = $USE_VMSS
ssh_public_key = "$SSH_PUBLIC_KEY"
vm_size_validator = "Standard_D4s_v3"
vm_size_sentry = "Standard_D4s_v3"
vm_size_rpc = "Standard_D8s_v3"
EOF
# Plan deployment
log_warn "Planning Terraform deployment..."
terraform plan -var-file=terraform.tfvars.vm -out=vm-deployment.tfplan
# Apply deployment
log_warn "Applying Terraform deployment..."
read -p "Do you want to proceed with VM deployment? (y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
terraform apply vm-deployment.tfplan
log_success "✓ VM deployment completed"
else
log_warn "Deployment cancelled"
exit 0
fi
# Get VM information
log_warn "Getting VM information..."
terraform output -json > vm-deployment-output.json
log_success "VM deployment completed successfully!"
log_warn "VM information saved to terraform/vm-deployment-output.json"
# Display VM information
log_warn "VM Information:"
jq -r '.vm_names.value[]' terraform/vm-deployment-output.json 2>/dev/null || echo "VM information not available"
log_success "Deployment complete!"