56 lines
1.9 KiB
Bash
56 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
# orchestrate-startup.sh — secuencia de arranque tras un rebote (corre en el HOST).
|
|
# Lo dispara el watcher al detectar el fichero de señal 'encender'.
|
|
# Orden INVERSO al apagado: primero la BD (para que esté lista antes de que
|
|
# los escritores vuelvan), luego HA reenciende Shelly/nodos por su cuenta.
|
|
#
|
|
# NOTA: el reencendido de los Shelly (Arduinos y raspi de servicio) lo hace la
|
|
# automatización de HA. Este script solo se ocupa de lo que vive en el host:
|
|
# arrancar el contenedor de la base de datos y confirmar que responde.
|
|
|
|
set -uo pipefail
|
|
|
|
# CONFIG ----------------------------------------------------------------------
|
|
CONTAINER="mariadb"
|
|
LOG="/var/log/safe-shutdown.log"
|
|
# -----------------------------------------------------------------------------
|
|
|
|
log() { echo "$(date -Is) [orchestrate-startup] $*" | tee -a "$LOG"; }
|
|
|
|
log "===== SECUENCIA DE ARRANQUE INICIADA ====="
|
|
|
|
# ¿Ya está corriendo? (idempotente: por si la señal llega dos veces)
|
|
if docker ps --format '{{.Names}}' | grep -qx "$CONTAINER"; then
|
|
log "el contenedor '$CONTAINER' ya está corriendo. Nada que hacer."
|
|
log "===== SECUENCIA DE ARRANQUE COMPLETADA ====="
|
|
exit 0
|
|
fi
|
|
|
|
# 1. Arrancar el contenedor de la BD.
|
|
log "arrancando contenedor '$CONTAINER'..."
|
|
if docker start "$CONTAINER" >/dev/null; then
|
|
log "docker start devolvió OK"
|
|
else
|
|
log "ERROR: docker start falló"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Esperar a que MariaDB acepte conexiones (no basta con que el contenedor
|
|
# esté 'Up': el servidor tarda unos segundos en estar listo).
|
|
log "esperando a que MariaDB acepte conexiones..."
|
|
ready=0
|
|
for i in {1..30}; do
|
|
if docker exec "$CONTAINER" mariadb-admin ping --silent &>/dev/null; then
|
|
ready=1
|
|
log "MariaDB responde (tras ${i}s)"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
if [[ "$ready" -eq 0 ]]; then
|
|
log "ERROR: MariaDB no respondió tras 30s"
|
|
exit 1
|
|
fi
|
|
|
|
log "===== SECUENCIA DE ARRANQUE COMPLETADA =====" |