release v1.0
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#!/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 ====="
|
||||
Reference in New Issue
Block a user