release v1.0

This commit is contained in:
2026-07-21 12:37:30 +02:00
parent 2d2cdfad3b
commit 59541b7954
19 changed files with 1245 additions and 2 deletions
+56
View File
@@ -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 ====="