Files
proxmox/scripts/deploy-all-chain138-containers.sh
defiQUG cb47cce074 Complete markdown files cleanup and organization
- Organized 252 files across project
- Root directory: 187 → 2 files (98.9% reduction)
- Moved configuration guides to docs/04-configuration/
- Moved troubleshooting guides to docs/09-troubleshooting/
- Moved quick start guides to docs/01-getting-started/
- Moved reports to reports/ directory
- Archived temporary files
- Generated comprehensive reports and documentation
- Created maintenance scripts and guides

All files organized according to established standards.
2026-01-06 01:46:25 -08:00

226 lines
6.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Master deployment script for all ChainID 138 containers
# This script orchestrates the complete deployment process
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
log_success() { echo -e "${GREEN}[✓]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# Check prerequisites
check_prerequisites() {
log_info "Checking prerequisites..."
local missing=0
# Check if scripts exist
local required_scripts=(
"configure-besu-chain138-nodes.sh"
"verify-chain138-config.sh"
"setup-jwt-auth-all-rpc-containers.sh"
)
for script in "${required_scripts[@]}"; do
if [ ! -f "$SCRIPT_DIR/$script" ]; then
log_error "Required script not found: $script"
((missing++))
fi
done
if [ $missing -gt 0 ]; then
log_error "Missing required scripts. Please ensure all scripts are present."
return 1
fi
log_success "All prerequisites met"
return 0
}
# Step 1: Configure Besu nodes
step1_configure_besu() {
log_info "Step 1: Configuring Besu nodes..."
echo ""
if [ ! -f "$SCRIPT_DIR/configure-besu-chain138-nodes.sh" ]; then
log_error "configure-besu-chain138-nodes.sh not found"
return 1
fi
bash "$SCRIPT_DIR/configure-besu-chain138-nodes.sh"
if [ $? -eq 0 ]; then
log_success "Besu nodes configured successfully"
return 0
else
log_error "Failed to configure Besu nodes"
return 1
fi
}
# Step 2: Verify configuration
step2_verify_config() {
log_info "Step 2: Verifying configuration..."
echo ""
if [ ! -f "$SCRIPT_DIR/verify-chain138-config.sh" ]; then
log_error "verify-chain138-config.sh not found"
return 1
fi
bash "$SCRIPT_DIR/verify-chain138-config.sh"
if [ $? -eq 0 ]; then
log_success "Configuration verified successfully"
return 0
else
log_warn "Some verification checks may have failed (this is OK if containers are not yet running)"
return 0
fi
}
# Step 3: Setup JWT authentication
step3_setup_jwt() {
log_info "Step 3: Setting up JWT authentication for RPC containers..."
echo ""
if [ ! -f "$SCRIPT_DIR/setup-jwt-auth-all-rpc-containers.sh" ]; then
log_error "setup-jwt-auth-all-rpc-containers.sh not found"
return 1
fi
bash "$SCRIPT_DIR/setup-jwt-auth-all-rpc-containers.sh"
if [ $? -eq 0 ]; then
log_success "JWT authentication configured successfully"
return 0
else
log_warn "JWT authentication setup may have failed for some containers (this is OK if containers are not yet running)"
return 0
fi
}
# Step 4: Generate JWT tokens
step4_generate_tokens() {
log_info "Step 4: Generating JWT tokens for operators..."
echo ""
if [ ! -f "$SCRIPT_DIR/generate-jwt-token-for-container.sh" ]; then
log_error "generate-jwt-token-for-container.sh not found"
return 1
fi
# Generate tokens for Ali (full access)
log_info "Generating tokens for Ali (full access)..."
for vmid in 2503 2504; do
log_info " VMID $vmid:"
bash "$SCRIPT_DIR/generate-jwt-token-for-container.sh" "$vmid" "ali-full-access" 365 || log_warn " Failed to generate token for $vmid"
done
# Generate tokens for Luis (RPC-only)
log_info "Generating tokens for Luis (RPC-only)..."
for vmid in 2505 2506; do
log_info " VMID $vmid:"
bash "$SCRIPT_DIR/generate-jwt-token-for-container.sh" "$vmid" "luis-rpc-access" 365 || log_warn " Failed to generate token for $vmid"
done
# Generate tokens for Putu (RPC-only)
log_info "Generating tokens for Putu (RPC-only)..."
for vmid in 2507 2508; do
log_info " VMID $vmid:"
bash "$SCRIPT_DIR/generate-jwt-token-for-container.sh" "$vmid" "putu-rpc-access" 365 || log_warn " Failed to generate token for $vmid"
done
log_success "JWT token generation completed"
}
# Main execution
main() {
echo ""
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log_info "ChainID 138 Complete Deployment Script"
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# Check prerequisites
if ! check_prerequisites; then
log_error "Prerequisites check failed. Please fix issues and try again."
exit 1
fi
echo ""
log_info "This script will:"
log_info " 1. Configure all Besu nodes (static-nodes.json, permissioned-nodes.json)"
log_info " 2. Verify configuration"
log_info " 3. Setup JWT authentication for RPC containers"
log_info " 4. Generate JWT tokens for operators"
echo ""
read -p "Continue? (y/N): " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_info "Deployment cancelled"
exit 0
fi
local failed_steps=0
# Step 1: Configure Besu
if ! step1_configure_besu; then
((failed_steps++))
fi
echo ""
# Step 2: Verify configuration
if ! step2_verify_config; then
((failed_steps++))
fi
echo ""
# Step 3: Setup JWT
if ! step3_setup_jwt; then
((failed_steps++))
fi
echo ""
# Step 4: Generate tokens
step4_generate_tokens
echo ""
# Summary
echo ""
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
log_info "Deployment Summary"
log_info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
if [ $failed_steps -eq 0 ]; then
log_success "All deployment steps completed successfully!"
else
log_warn "Deployment completed with $failed_steps failed step(s)"
log_info "Some steps may have failed because containers are not yet running"
log_info "Re-run this script after containers are created"
fi
echo ""
log_info "Next steps:"
log_info " 1. Create remaining containers (see docs/MISSING_CONTAINERS_LIST.md)"
log_info " 2. Re-run this script to complete configuration"
log_info " 3. Test JWT authentication on each RPC container"
log_info " 4. Distribute JWT tokens to operators"
echo ""
}
main "$@"