Files
orchestrator/scripts/deploy_ia_tables.sh

129 lines
3.9 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Script de despliegue de tablas de contexto IA
# Para servidores: architect (local), deck, corp
# Fecha: 2024-12-24
set -e # Exit on error
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCHEMA_FILE="${SCRIPT_DIR}/ia_context_schema.sql"
SSH_KEY="$HOME/.ssh/tzzr"
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo "============================================================================"
echo "TZZR - Despliegue de Tablas de Contexto IA"
echo "============================================================================"
echo ""
# Función para desplegar en un servidor
deploy_to_server() {
local server_name=$1
local server_host=$2
local is_local=$3
echo -e "${YELLOW}Desplegando en ${server_name} (${server_host})...${NC}"
if [ "$is_local" = "true" ]; then
# Despliegue local en architect
echo " → Ejecutando SQL en PostgreSQL local..."
if sudo -u postgres psql -f "$SCHEMA_FILE" 2>&1 | tee /tmp/deploy_${server_name}.log; then
echo -e "${GREEN}${server_name}: Deployment exitoso${NC}"
return 0
else
echo -e "${RED}${server_name}: Error en deployment${NC}"
cat /tmp/deploy_${server_name}.log
return 1
fi
else
# Despliegue remoto vía SSH
echo " → Copiando schema al servidor..."
if ! scp -i "$SSH_KEY" -o StrictHostKeyChecking=no "$SCHEMA_FILE" "root@${server_host}:/tmp/ia_context_schema.sql" 2>&1; then
echo -e "${RED}${server_name}: Error copiando archivo${NC}"
return 1
fi
echo " → Ejecutando SQL en PostgreSQL remoto..."
if ssh -i "$SSH_KEY" -o StrictHostKeyChecking=no "root@${server_host}" \
"sudo -u postgres psql -f /tmp/ia_context_schema.sql && rm /tmp/ia_context_schema.sql" 2>&1 | tee /tmp/deploy_${server_name}.log; then
echo -e "${GREEN}${server_name}: Deployment exitoso${NC}"
return 0
else
echo -e "${RED}${server_name}: Error en deployment${NC}"
cat /tmp/deploy_${server_name}.log
return 1
fi
fi
}
# Verificar que el schema existe
if [ ! -f "$SCHEMA_FILE" ]; then
echo -e "${RED}Error: No se encuentra el archivo de schema: ${SCHEMA_FILE}${NC}"
exit 1
fi
echo "Schema a desplegar: $SCHEMA_FILE"
echo ""
# Contadores
total=0
success=0
failed=0
# Desplegar en architect (local)
total=$((total + 1))
if deploy_to_server "architect" "localhost" "true"; then
success=$((success + 1))
else
failed=$((failed + 1))
fi
echo ""
# Desplegar en deck (remoto)
total=$((total + 1))
echo "Verificando conectividad a deck..."
if ssh -i "$SSH_KEY" -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@72.62.1.113 "echo 'OK'" &>/dev/null; then
if deploy_to_server "deck" "72.62.1.113" "false"; then
success=$((success + 1))
else
failed=$((failed + 1))
fi
else
echo -e "${YELLOW} ⚠️ deck: Servidor no disponible (SSH connection refused)${NC}"
failed=$((failed + 1))
fi
echo ""
# Desplegar en corp (remoto)
total=$((total + 1))
if deploy_to_server "corp" "92.112.181.188" "false"; then
success=$((success + 1))
else
failed=$((failed + 1))
fi
echo ""
# Resumen
echo "============================================================================"
echo "RESUMEN DE DESPLIEGUE"
echo "============================================================================"
echo "Total servidores: $total"
echo -e "${GREEN}Exitosos: $success${NC}"
echo -e "${RED}Fallidos: $failed${NC}"
echo ""
if [ $success -eq $total ]; then
echo -e "${GREEN}✅ DEPLOYMENT COMPLETADO EXITOSAMENTE EN TODOS LOS SERVIDORES${NC}"
exit 0
elif [ $success -gt 0 ]; then
echo -e "${YELLOW}⚠️ DEPLOYMENT COMPLETADO CON ERRORES PARCIALES${NC}"
exit 1
else
echo -e "${RED}❌ DEPLOYMENT FALLÓ EN TODOS LOS SERVIDORES${NC}"
exit 1
fi