alicante-infra/fix_active.sh

82 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Script para arreglar Activepieces en Alicante Core V3.2
# Se ejecuta en DCC (10.10.10.101) dentro de /sc/alicante-infra
# Colores
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
REPO_DIR="/sc/alicante-infra"
GROUP_VARS="$REPO_DIR/group_vars/all.yml"
# IMPORTANTE: Ajusta si tu template real tiene otro nombre (ej. apps-business-compose.j2)
TEMPLATE_FILE="$REPO_DIR/roles/core/templates/business-compose.j2"
# 0. Verificaciones
if [ ! -f "$GROUP_VARS" ]; then
echo -e "${RED}ERROR: No encuentro $GROUP_VARS. ¿Estás en el DCC?${NC}"
exit 1
fi
# Verificar nombre real del template (Ansible usa src: "{{ item }}-compose.j2" normalmente)
if [ ! -f "$TEMPLATE_FILE" ]; then
# Intentamos buscar si existe con prefijo apps-
if [ -f "$REPO_DIR/roles/core/templates/apps-business-compose.j2" ]; then
TEMPLATE_FILE="$REPO_DIR/roles/core/templates/apps-business-compose.j2"
echo -e "${YELLOW}Aviso: Usando template alternativo: $TEMPLATE_FILE${NC}"
else
echo -e "${RED}ERROR: No encuentro el template business-compose.j2${NC}"
exit 1
fi
fi
echo -e "${GREEN}=== FIX ACTIVEPIECES SECRETS ===${NC}"
# 1. Generar Claves
echo -e "${YELLOW}[1/3] Generando claves criptográficas...${NC}"
AP_KEY=$(openssl rand -hex 16)
AP_JWT=$(openssl rand -base64 32)
echo " Encryption Key: $AP_KEY"
echo " JWT Secret: (generado)"
# 2. Inyectar en group_vars/all.yml
echo -e "${YELLOW}[2/3] Actualizando group_vars/all.yml...${NC}"
if grep -q "ap_encryption_key" "$GROUP_VARS"; then
echo -e " ⚠️ Variables ya existen en group_vars. Saltando inyección."
else
cat <<EOT >> "$GROUP_VARS"
# Activepieces Configuration
ap_encryption_key: "$AP_KEY"
ap_jwt_secret: "$AP_JWT"
EOT
echo -e " ✅ Variables añadidas al final del archivo."
fi
# 3. Parchear el Template (business-compose.j2)
echo -e "${YELLOW}[3/3] Parcheando template Docker Compose...${NC}"
# Hacemos backup
cp "$TEMPLATE_FILE" "${TEMPLATE_FILE}.bak_ap"
# Estrategia: Buscar la línea AP_FRONTEND_URL e insertar debajo las nuevas variables
# Usamos perl para inserción multilínea segura
perl -i -pe 's|(AP_FRONTEND_URL:.*)|$1\n AP_ENCRYPTION_KEY: "{{ ap_encryption_key }}"\n AP_JWT_SECRET: "{{ ap_jwt_secret }}"|g' "$TEMPLATE_FILE"
if grep -q "AP_ENCRYPTION_KEY" "$TEMPLATE_FILE"; then
echo -e " ✅ Template parcheado correctamente."
else
echo -e "${RED}ERROR: Falló el parcheo del template. Revisa manualmente.${NC}"
# Restaurar backup si falló
cp "${TEMPLATE_FILE}.bak_ap" "$TEMPLATE_FILE"
fi
echo -e "${GREEN}=== LISTO ===${NC}"
echo -e "Ahora ejecuta:"
echo -e "1. git diff"
echo -e "2. git add . && git commit -m 'Fix Activepieces secrets' && git push"
echo -e "3. Desplegar en Semaphore"