panels-origin/db/provision/verify-connectivity.sh
Cursor Agent 1ac04996b6
ops: generar accesos por ambiente y verificar Postgres, Redis y Contabo
Scripts create-accesses / verify-connectivity para un Postgres+Redis+bucket
por ambiente. /v1/health y el arranque de la API incluyen sonda de storage.

Co-authored-by: alberto.martinez <alberto.martinez@mrdev.mx>
2026-09-02 21:22:39 +00:00

79 lines
2.4 KiB
Bash
Executable file

#!/usr/bin/env bash
# PANELS · comprueba que ESTE ambiente responde: Postgres (6 roles),
# Redis (2 ACL) y Contabo (opcional; obligatorio si REQUIRE_S3=1).
#
# No crea recursos. Carga URLs desde el entorno (source .env.dev-local o
# las vars de Coolify).
#
# Uso:
# set -a && source .env.dev-local && set +a
# ./db/provision/verify-connectivity.sh
# REQUIRE_S3=1 ./db/provision/verify-connectivity.sh # staging/prod
set -uo pipefail
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
fail=0
check() {
local desc="$1"; shift
if "$@" >/tmp/panels-conn-out.$$ 2>&1; then
echo "OK - $desc"
else
echo "FAIL - $desc"
cat /tmp/panels-conn-out.$$
fail=1
fi
rm -f /tmp/panels-conn-out.$$
}
need() {
local name="$1"
if [[ -z "${!name:-}" ]]; then
echo "FAIL - falta $name"
fail=1
return 1
fi
return 0
}
echo "== Postgres =="
need DATABASE_URL_PLATFORM && check "platform_app SELECT 1" psql "$DATABASE_URL_PLATFORM" -c "SELECT 1;"
need DATABASE_URL_IAM && check "iam_app SELECT 1" psql "$DATABASE_URL_IAM" -c "SELECT 1;"
need DATABASE_URL_CORE && check "core_app SELECT 1" psql "$DATABASE_URL_CORE" -c "SELECT 1;"
if [[ -n "${DATABASE_URL_PLATFORM_OWNER:-}" ]]; then
check "platform_owner SELECT 1" psql "$DATABASE_URL_PLATFORM_OWNER" -c "SELECT 1;"
else
echo "SKIP - DATABASE_URL_PLATFORM_OWNER (solo hace falta para Liquibase)"
fi
if [[ -n "${DATABASE_URL_IAM_OWNER:-}" ]]; then
check "iam_owner SELECT 1" psql "$DATABASE_URL_IAM_OWNER" -c "SELECT 1;"
else
echo "SKIP - DATABASE_URL_IAM_OWNER"
fi
if [[ -n "${DATABASE_URL_CORE_OWNER:-}" ]]; then
check "core_owner SELECT 1" psql "$DATABASE_URL_CORE_OWNER" -c "SELECT 1;"
else
echo "SKIP - DATABASE_URL_CORE_OWNER"
fi
echo "== Redis =="
need REDIS_URL_IAM && check "iam redis PING" redis-cli -u "$REDIS_URL_IAM" PING
need REDIS_URL_CORE && check "core redis PING" redis-cli -u "$REDIS_URL_CORE" PING
echo "== Contabo (S3) =="
if command -v deno >/dev/null 2>&1; then
if (cd "$ROOT/api" && REQUIRE_S3="${REQUIRE_S3:-}" deno run --allow-net --allow-env --allow-read --allow-write scripts/verify-storage.ts); then
:
else
fail=1
fi
else
echo "FAIL - deno no está en PATH; no se pudo probar el bucket"
fail=1
fi
echo ""
if [[ "$fail" == "0" ]]; then
echo "Conectividad de este ambiente: OK"
else
echo "Hay fallos de conectividad -- no desplegar la API contra este ambiente todavía."
exit 1
fi