Files
madbase/scripts/deploy-4server.sh
Vlad Durnea a66d908eff
Some checks failed
CI / podman-build (push) Has been cancelled
CI / rust (push) Has been cancelled
chore: full stack stability and migration fixes, plus react UI progress
2026-03-18 09:01:38 +02:00

74 lines
2.4 KiB
Bash

#!/bin/bash
# Deploy MadBase 4-Server Architecture
set -e
SERVER1_IP="10.0.1.1" # Manually override these if not using Terraform
SERVER2_IP="10.0.1.2"
SERVER3_IP="10.0.1.3"
SERVER4_IP="10.0.1.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
ssh root@$server_ip "echo 'SERVER1_IP=10.0.1.1' >> $DEPLOY_PATH/.env"
ssh root@$server_ip "echo 'SERVER2_IP=10.0.1.2' >> $DEPLOY_PATH/.env"
ssh root@$server_ip "echo 'SERVER3_IP=10.0.1.3' >> $DEPLOY_PATH/.env"
ssh root@$server_ip "echo 'SERVER4_IP=10.0.1.4' >> $DEPLOY_PATH/.env"
fi
if [[ "$server_ip" =~ (10.0.1.2|10.0.1.3|10.0.1.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 & Monitoring"
deploy_to_server $SERVER1_IP "deploy/hetzner/server1.compose.yml" ".env"
scp prometheus.yml root@$SERVER1_IP:$DEPLOY_PATH/
echo ""
echo "🗄️ Server 2: Pillar Node 1 (DB + Worker + HAProxy)"
deploy_to_server $SERVER2_IP "deploy/hetzner/server2.compose.yml" ".env"
echo ""
echo "📊 Server 3: Pillar Node 2 (DB + Worker + Redis)"
deploy_to_server $SERVER3_IP "deploy/hetzner/server3.compose.yml" ".env"
echo ""
echo "🗄️ Server 4: Pillar Node 3 (DB + Worker)"
deploy_to_server $SERVER4_IP "deploy/hetzner/server4.compose.yml" ".env"
echo ""
echo "🛠️ Installing Systemd Self-Healing..."
for server in $SERVER1_IP $SERVER2_IP $SERVER3_IP $SERVER4_IP; do
scp deploy/hetzner/madbase.service root@$server:/etc/systemd/system/
ssh root@$server "systemctl daemon-reload && systemctl enable madbase && systemctl restart madbase"
done
echo ""
echo "⏳ Waiting for etcd cluster (30s)..."
sleep 30
echo "🔍 Verifying Patroni cluster..."
for server in $SERVER2_IP $SERVER3_IP $SERVER4_IP; do
role=$(curl -s http://$server:8008/patroni/role | jq -r '.' || echo "unknown")
echo " $server role: $role"
done
echo ""
echo "🎉 Deployment complete and self-healing enabled!"