veza/scripts/deploy-blue-green.sh

39 lines
1.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# Blue-Green deployment switch for Veza production
# Usage: ./scripts/deploy-blue-green.sh [blue|green]
# Requires: docker, config/haproxy/ directory, veza_haproxy container running
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
HAPROXY_DIR="$REPO_ROOT/config/haproxy"
TARGET="${1:-}"
if [[ "$TARGET" != "blue" && "$TARGET" != "green" ]]; then
echo "Usage: $0 [blue|green]"
echo " blue - Route traffic to blue stack (default)"
echo " green - Route traffic to green stack"
exit 1
fi
CONFIG_SOURCE="$HAPROXY_DIR/haproxy-$TARGET.cfg"
CONFIG_DEST="$HAPROXY_DIR/haproxy.cfg"
if [[ ! -f "$CONFIG_SOURCE" ]]; then
echo "Error: Config file not found: $CONFIG_SOURCE"
exit 1
fi
echo "Switching to $TARGET stack..."
cp "$CONFIG_SOURCE" "$CONFIG_DEST"
# Reload HAProxy (graceful, no connection drop)
if docker ps --format '{{.Names}}' | grep -q '^veza_haproxy$'; then
docker kill -s HUP veza_haproxy 2>/dev/null || {
echo "Warning: Could not send HUP to HAProxy. Try: docker restart veza_haproxy"
}
echo "HAProxy reloaded. Active stack: $TARGET"
else
echo "Warning: veza_haproxy container not running. Config updated; start stack to apply."
fi