110 lines
3.4 KiB
Bash
Executable File
110 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Colores
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${GREEN}=== ALICANTE CORE UPGRADER V3.2 (FIXED) ===${NC}"
|
|
|
|
# 1. Definir archivo correcto (GRACIAS AL COMANDO TREE)
|
|
TEMPLATE_FILE="roles/core/templates/apps-docs-compose.j2"
|
|
GROUP_VARS="group_vars/all.yml"
|
|
|
|
# Verificar que existe el archivo objetivo
|
|
if [ ! -f "$TEMPLATE_FILE" ]; then
|
|
echo -e "${RED}[ERROR] No encuentro $TEMPLATE_FILE${NC}"
|
|
echo "Por favor, verifica que estás en /sc/alicante-infra"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Actualizar group_vars (Idempotente: verifica si ya está)
|
|
echo -e "${YELLOW}[1/3] Verificando variables globales...${NC}"
|
|
if grep -q "carbone_port" "$GROUP_VARS"; then
|
|
echo -e " ✅ Variables ya existen en group_vars/all.yml (del intento anterior)."
|
|
else
|
|
cat <<EOT >> "$GROUP_VARS"
|
|
|
|
# --- ALICANTE CORE V3.2 CONFIGURATION ---
|
|
# Carbone (Stack Docs)
|
|
carbone_port: 4000
|
|
carbone_version: "4"
|
|
carbone_image: "carbone/carbone"
|
|
EOT
|
|
echo -e " ✅ Variables añadidas."
|
|
fi
|
|
|
|
# 3. Inyectar Servicio Carbone (Método seguro con archivos temporales)
|
|
echo -e "${YELLOW}[2/3] Parcheando $TEMPLATE_FILE ...${NC}"
|
|
|
|
# Crear backup
|
|
cp "$TEMPLATE_FILE" "${TEMPLATE_FILE}.bak"
|
|
|
|
# Crear archivo temporal con el bloque del servicio
|
|
cat <<EOF > /tmp/carbone_service_block.yml
|
|
carbone:
|
|
image: "{{ carbone_image }}:{{ carbone_version }}"
|
|
container_name: carbone
|
|
restart: unless-stopped
|
|
ports:
|
|
- "{{ carbone_port }}:4000"
|
|
environment:
|
|
TZ: "{{ timezone }}"
|
|
volumes:
|
|
- carbone_templates:/app/templates
|
|
- carbone_output:/app/output
|
|
networks:
|
|
- docs_network
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:4000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
EOF
|
|
|
|
# Crear archivo temporal con los volúmenes
|
|
cat <<EOF > /tmp/carbone_volumes_block.yml
|
|
carbone_templates:
|
|
carbone_output:
|
|
EOF
|
|
|
|
# Lógica de inserción:
|
|
# 1. Si ya existe "container_name: carbone", no hacer nada.
|
|
# 2. Si no, usar AWK para insertar el bloque de servicio ANTES de la línea "volumes:"
|
|
# 3. Añadir los volúmenes al final del archivo.
|
|
|
|
if grep -q "container_name: carbone" "$TEMPLATE_FILE"; then
|
|
echo -e " ⚠️ El servicio Carbone ya parece estar en el template."
|
|
else
|
|
# Insertar servicio ANTES de la línea que empieza por 'volumes:'
|
|
awk 'NR==FNR{svc=$0; next} /^volumes:/{print svc} 1' /tmp/carbone_service_block.yml "$TEMPLATE_FILE" > "${TEMPLATE_FILE}.tmp" && mv "${TEMPLATE_FILE}.tmp" "$TEMPLATE_FILE"
|
|
|
|
# Añadir volúmenes al final del archivo (asumiendo que volumes: es el último bloque)
|
|
cat /tmp/carbone_volumes_block.yml >> "$TEMPLATE_FILE"
|
|
|
|
echo -e " ✅ Template actualizado correctamente."
|
|
fi
|
|
|
|
# Limpieza
|
|
rm -f /tmp/carbone_service_block.yml /tmp/carbone_volumes_block.yml
|
|
|
|
# 4. Actualizar Checklist
|
|
echo -e "${YELLOW}[3/3] Actualizando checklist...${NC}"
|
|
CHECKLIST="deployment-checklist.sh"
|
|
if [ -f "$CHECKLIST" ]; then
|
|
if ! grep -q "Carbone" "$CHECKLIST"; then
|
|
# Añadir check simple al final si no existe
|
|
echo 'verify_service "Carbone" "4000"' >> "$CHECKLIST"
|
|
echo -e " ✅ Checklist actualizado."
|
|
fi
|
|
fi
|
|
|
|
echo -e "${GREEN}=== ¡ACTUALIZACIÓN LOCAL COMPLETADA! ===${NC}"
|
|
echo -e "Ahora ejecuta:"
|
|
echo -e "1. git diff (para ver qué ha pasado)"
|
|
echo -e "2. git add . && git commit -m 'Fix: V3.2 upgrade paths' && git push"
|
|
echo -e "3. Despliega en Semaphore"
|