Files
proxmox/scripts/archive/consolidated/deploy/deploy-node-lists-to-all-nodes.sh.bak
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:46:57 -08:00

159 lines
5.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Deploy static-nodes.json and permissioned-nodes.json to ALL Besu nodes
# Ensures both files are identical on all nodes
set -e
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'
CYAN='\033[0;36m'
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"; }
log_section() { echo -e "\n${CYAN}=== $1 ===${NC}"; }
# Source files
STATIC_NODES_SOURCE="$PROJECT_ROOT/smom-dbis-138/config/static-nodes.json"
PERMISSIONED_NODES_SOURCE="$PROJECT_ROOT/smom-dbis-138-proxmox/config/permissioned-nodes.json"
# Verify source files exist
if [ ! -f "$STATIC_NODES_SOURCE" ]; then
log_error "Source static-nodes.json not found: $STATIC_NODES_SOURCE"
exit 1
fi
if [ ! -f "$PERMISSIONED_NODES_SOURCE" ]; then
log_error "Source permissioned-nodes.json not found: $PERMISSIONED_NODES_SOURCE"
exit 1
fi
# Verify files are identical
if ! diff -q "$STATIC_NODES_SOURCE" "$PERMISSIONED_NODES_SOURCE" > /dev/null 2>&1; then
log_warn "static-nodes.json and permissioned-nodes.json differ!"
log_info "Syncing permissioned-nodes.json to match static-nodes.json..."
cp "$STATIC_NODES_SOURCE" "$PERMISSIONED_NODES_SOURCE"
log_success "Files synced"
fi
# All Besu nodes (VMID -> IP)
declare -A ALL_NODES=(
# Validators
["1000"]="192.168.11.100"
["1001"]="192.168.11.101"
["1002"]="192.168.11.102"
["1003"]="192.168.11.103"
["1004"]="192.168.11.104"
# Sentries
["1500"]="192.168.11.150"
["1501"]="192.168.11.151"
["1502"]="192.168.11.152"
["1503"]="192.168.11.153"
# RPC Nodes
["2101"]="192.168.11.211"
["2400"]="192.168.11.240"
["2401"]="192.168.11.241"
["2402"]="192.168.11.242"
["2500"]="192.168.11.250"
["2501"]="192.168.11.251"
["2502"]="192.168.11.252"
["2505"]="192.168.11.201"
["2506"]="192.168.11.202"
["2507"]="192.168.11.203"
["2508"]="192.168.11.204"
)
PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.10}"
log_section "Deploying Node Lists to All Besu Nodes"
log_info "Source files:"
log_info " static-nodes.json: $STATIC_NODES_SOURCE"
log_info " permissioned-nodes.json: $PERMISSIONED_NODES_SOURCE"
log_info ""
# Function to deploy to a node
deploy_to_node() {
local vmid=$1
local ip=$2
log_info "Deploying to VMID $vmid ($ip)..."
# Check if container exists and is running
local status=$(ssh root@"$PROXMOX_HOST" "pct status $vmid 2>/dev/null" | awk '{print $2}' || echo "unknown")
if [ "$status" != "running" ]; then
log_warn " ⚠ VMID $vmid is not running (status: $status) - skipping"
return 1
fi
# Create directories if they don't exist
ssh root@"$PROXMOX_HOST" "pct exec $vmid -- mkdir -p /var/lib/besu /var/lib/besu/permissions" 2>/dev/null || true
# Deploy static-nodes.json
log_info " Copying static-nodes.json..."
scp "$STATIC_NODES_SOURCE" root@"$PROXMOX_HOST":/tmp/static-nodes.json.$vmid >/dev/null 2>&1
ssh root@"$PROXMOX_HOST" "pct push $vmid /tmp/static-nodes.json.$vmid /var/lib/besu/static-nodes.json" >/dev/null 2>&1
ssh root@"$PROXMOX_HOST" "rm /tmp/static-nodes.json.$vmid" 2>/dev/null || true
# Deploy permissioned-nodes.json
log_info " Copying permissioned-nodes.json..."
scp "$PERMISSIONED_NODES_SOURCE" root@"$PROXMOX_HOST":/tmp/permissioned-nodes.json.$vmid >/dev/null 2>&1
ssh root@"$PROXMOX_HOST" "pct push $vmid /tmp/permissioned-nodes.json.$vmid /var/lib/besu/permissions/permissioned-nodes.json" >/dev/null 2>&1
ssh root@"$PROXMOX_HOST" "rm /tmp/permissioned-nodes.json.$vmid" 2>/dev/null || true
# Set permissions
ssh root@"$PROXMOX_HOST" "pct exec $vmid -- chown besu:besu /var/lib/besu/static-nodes.json /var/lib/besu/permissions/permissioned-nodes.json 2>/dev/null || chown root:root /var/lib/besu/static-nodes.json /var/lib/besu/permissions/permissioned-nodes.json" 2>/dev/null || true
ssh root@"$PROXMOX_HOST" "pct exec $vmid -- chmod 644 /var/lib/besu/static-nodes.json /var/lib/besu/permissions/permissioned-nodes.json" 2>/dev/null || true
# Verify files
local static_check=$(ssh root@"$PROXMOX_HOST" "pct exec $vmid -- test -f /var/lib/besu/static-nodes.json && echo 'ok' || echo 'missing'" 2>/dev/null || echo "error")
local perm_check=$(ssh root@"$PROXMOX_HOST" "pct exec $vmid -- test -f /var/lib/besu/permissions/permissioned-nodes.json && echo 'ok' || echo 'missing'" 2>/dev/null || echo "error")
if [ "$static_check" = "ok" ] && [ "$perm_check" = "ok" ]; then
log_success " ✓ Files deployed successfully"
return 0
else
log_error " ✗ Deployment failed (static: $static_check, perm: $perm_check)"
return 1
fi
}
# Deploy to all nodes
SUCCESS_COUNT=0
FAILED_COUNT=0
for vmid in "${!ALL_NODES[@]}"; do
if deploy_to_node "$vmid" "${ALL_NODES[$vmid]}"; then
((SUCCESS_COUNT++))
else
((FAILED_COUNT++))
fi
echo ""
done
# Summary
log_section "Deployment Summary"
log_info "Successfully deployed: $SUCCESS_COUNT nodes"
if [ $FAILED_COUNT -gt 0 ]; then
log_warn "Failed/Skipped: $FAILED_COUNT nodes"
fi
log_info ""
log_info "Next steps:"
log_info "1. Verify p2p-host configuration on all nodes"
log_info "2. Restart Besu services to apply changes"
log_info "3. Verify peer connections after restart"