#!/usr/bin/env bash # Direct container creation script for ChainID 138 # Creates all 13 missing containers with correct specifications set -euo pipefail # Load IP configuration SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true PROXMOX_HOST="${PROXMOX_HOST:-192.168.11.10}" TEMPLATE="local:vztmpl/debian-12-standard_12.12-1_amd64.tar.zst" STORAGE="local-lvm" NETWORK="vmbr0" GATEWAY="${NETWORK_GATEWAY:-192.168.11.1}" # Colors GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' log() { echo -e "${BLUE}[INFO]${NC} $1"; } success() { echo -e "${GREEN}[✓]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1"; } # Check if container exists exists() { local vmid=$1 ssh -o StrictHostKeyChecking=no root@${PROXMOX_HOST} "pct list | grep -q '^$vmid ' && echo 'yes' || echo 'no'" } # Create container create() { local vmid=$1 local hostname=$2 local ip=$3 local mem=$4 local cores=$5 local disk=$6 local desc="$7" if [[ "$(exists $vmid)" == "yes" ]]; then warn "Container $vmid already exists, skipping..." return 0 fi log "Creating $vmid: $hostname ($ip) - ${mem}GB RAM, ${cores} cores, ${disk}GB disk..." ssh -o StrictHostKeyChecking=no root@${PROXMOX_HOST} <&1 | grep -v "WARNING: Ignoring duplicate" || true EOF if [[ "$(exists $vmid)" == "yes" ]]; then success "Container $vmid created successfully" return 0 else error "Failed to create container $vmid" return 1 fi } log "Creating ChainID 138 containers on $PROXMOX_HOST..." echo "" # Besu Sentry create 1504 "besu-sentry-5" "${IP_BESU_SENTRY:-${IP_BESU_SENTRY:-192.168.11.154}}" 4 2 100 "Besu Sentry Node - Ali's dedicated host" # Besu RPC Nodes create 2503 "besu-rpc-4" "${RPC_ALI_1_ALT:-${RPC_ALI_1_ALT:-${RPC_ALI_1_ALT:-192.168.11.253}}}" 16 4 200 "Besu RPC Node - Ali (0x8a identity)" create 2504 "besu-rpc-4" "${RPC_ALI_2_ALT:-${RPC_ALI_2_ALT:-${RPC_ALI_2_ALT:-192.168.11.254}}}" 16 4 200 "Besu RPC Node - Ali (0x1 identity)" create 2505 "besu-rpc-luis" "${RPC_LUIS_1:-${RPC_LUIS_1:-${RPC_LUIS_1:-192.168.11.255}}}" 16 4 200 "Besu RPC Node - Luis (0x8a identity)" create 2506 "besu-rpc-luis" "${RPC_LUIS_2:-${RPC_LUIS_2:-${RPC_LUIS_2:-192.168.11.202}}}" 16 4 200 "Besu RPC Node - Luis (0x1 identity)" create 2507 "besu-rpc-putu" "${RPC_PUTU_1:-${RPC_PUTU_1:-${RPC_PUTU_1:-192.168.11.203}}}" 16 4 200 "Besu RPC Node - Putu (0x8a identity)" create 2508 "besu-rpc-putu" "${RPC_PUTU_2:-${RPC_PUTU_2:-${RPC_PUTU_2:-192.168.11.204}}}" 16 4 200 "Besu RPC Node - Putu (0x1 identity)" # Hyperledger Services create 6200 "firefly-1" "${IP_FIREFLY:-192.168.11.66}" 4 2 50 "Hyperledger Firefly Core" create 6201 "firefly-2" "${IP_FIREFLY_2:-192.168.11.67}" 4 2 50 "Hyperledger Firefly Node - ChainID 138" create 5200 "cacti-1" "${IP_CACTI:-${IP_CACTI:-192.168.11.64}}" 4 2 50 "Hyperledger Cacti" create 6000 "fabric-1" "${IP_FABRIC:-${IP_FABRIC:-192.168.11.65}}" 8 4 100 "Hyperledger Fabric" create 6400 "indy-1" "${IP_INDY:-${IP_INDY:-192.168.11.68}}" 8 4 100 "Hyperledger Indy" # Explorer create 5000 "blockscout-1" "${IP_BLOCKSCOUT:-192.168.11.69}" 8 4 200 "Blockscout Explorer - ChainID 138" echo "" log "Container creation complete!" log "Checking final status..." ssh -o StrictHostKeyChecking=no root@${PROXMOX_HOST} "pct list | grep -E '(1504|2503|2504|2505|2506|2507|2508|6200|6201|5200|6000|6400|5000)' | sort -n"