#!/bin/bash # Deploy MadBase 4-Server Architecture set -e SERVER1_IP="10.0.0.1" SERVER2_IP="10.0.0.2" SERVER3_IP="10.0.0.3" SERVER4_IP="10.0.0.4" DEPLOY_PATH="/opt/madbase" echo "🚀 Deploying MadBase 4-Server Architecture..." deploy_to_server() { local server_ip=$1 local compose_file=$2 local env_file=$3 echo "📦 Deploying to $server_ip..." ssh root@$server_ip "mkdir -p $DEPLOY_PATH" scp $compose_file root@$server_ip:$DEPLOY_PATH/docker-compose.yml if [ -n "$env_file" ]; then scp $env_file root@$server_ip:$DEPLOY_PATH/.env fi if [[ "$server_ip" =~ (10.0.0.2|10.0.0.3|10.0.0.4) ]]; then scp autobase-haproxy.cfg root@$server_ip:$DEPLOY_PATH/ fi ssh root@$server_ip "cd $DEPLOY_PATH && podman network create madbase_net || true" echo "✅ Files copied to $server_ip" } echo "📡 Server 1: Control Plane" deploy_to_server $SERVER1_IP "docker-compose.4server.server1.yml" "" echo "" echo "🗄️ Server 2: Worker 1 + Autobase Node 1" deploy_to_server $SERVER2_IP "docker-compose.4server.server2.yml" "env/autobase.4server.server2.env" echo "" echo "📊 Server 3: Workers 3,4 + Autobase Node 2" deploy_to_server $SERVER3_IP "docker-compose.4server.server3.yml" "env/autobase.4server.server3.env" echo "" echo "🗄️ Server 4: Worker 5 + Autobase Node 3" deploy_to_server $SERVER4_IP "docker-compose.4server.server4.yml" "env/autobase.4server.server4.env" echo "" echo "🔄 Starting Autobase cluster..." for server in $SERVER2_IP $SERVER3_IP $SERVER4_IP; do ssh root@$server "cd $DEPLOY_PATH && podman-compose up -d etcd patroni haproxy" done echo "" echo "⏳ Waiting for etcd cluster (30s)..." sleep 30 echo "🔍 Verifying Autobase cluster..." for server in $SERVER2_IP $SERVER3_IP $SERVER4_IP; do state=$(curl -s http://$server:8008/patroni/info | jq -r '.state // "unknown"') role=$(curl -s http://$server:8008/patroni/info | jq -r '.role // "unknown"') echo " $server: $state ($role)" done echo "" echo "🚀 Starting application services..." ssh root@$SERVER1_IP "cd $DEPLOY_PATH && podman-compose up -d" ssh root@$SERVER2_IP "cd $DEPLOY_PATH && podman-compose up -d worker1" ssh root@$SERVER3_IP "cd $DEPLOY_PATH && podman-compose up -d worker3 worker4 victoriametrics loki" ssh root@$SERVER4_IP "cd $DEPLOY_PATH && podman-compose up -d worker5" echo "" echo "🎉 Deployment complete!"