fix : t 001 a 020 fait
This commit is contained in:
@@ -292,9 +292,6 @@ CHECK APP RECETTE 🟢
|
||||
|
||||
# 7. Script : rebuild-bdd-recette.sh
|
||||
|
||||
Script :
|
||||
|
||||
|
||||
## Objectif
|
||||
|
||||
Restaurer une base PostgreSQL à partir d’un dump distant.
|
||||
|
||||
@@ -18,7 +18,8 @@ umask 077
|
||||
# 6. exporte les rôles PostgreSQL ;
|
||||
# 7. dump chaque base au format personnalisé PostgreSQL ;
|
||||
# 8. transfère chaque fichier vers le serveur distant ;
|
||||
# 9. applique une rotation distante sur 10 jours ;
|
||||
# 9. applique une rotation distante selon BACKUP_RETENTION_DAYS
|
||||
# (10 jours par défaut) ;
|
||||
# 10. envoie un bilan sur Discord :
|
||||
# - 1 message global si tout est OK ;
|
||||
# - en cas d’erreur partielle :
|
||||
@@ -50,6 +51,10 @@ set +a
|
||||
#######################################
|
||||
|
||||
: "${ENV_NAME:?Variable ENV_NAME manquante}"
|
||||
[[ "$ENV_NAME" =~ ^[a-zA-Z0-9_-]+$ ]] || {
|
||||
echo "Variable ENV_NAME invalide : $ENV_NAME" >&2
|
||||
exit 1
|
||||
}
|
||||
: "${PGHOST:?Variable PGHOST manquante}"
|
||||
: "${PGPORT:?Variable PGPORT manquante}"
|
||||
: "${PGUSER:?Variable PGUSER manquante}"
|
||||
@@ -58,6 +63,10 @@ set +a
|
||||
: "${BACKUP_REMOTE_USER:?Variable BACKUP_REMOTE_USER manquante}"
|
||||
: "${BACKUP_REMOTE_HOST:?Variable BACKUP_REMOTE_HOST manquante}"
|
||||
: "${BACKUP_REMOTE_DIR:?Variable BACKUP_REMOTE_DIR manquante}"
|
||||
[[ "$BACKUP_REMOTE_DIR" =~ ^[a-zA-Z0-9/_.-]+$ ]] || {
|
||||
echo "Variable BACKUP_REMOTE_DIR invalide : $BACKUP_REMOTE_DIR" >&2
|
||||
exit 1
|
||||
}
|
||||
: "${SSH_KEY:?Variable SSH_KEY manquante}"
|
||||
: "${SSH_TIMEOUT:?Variable SSH_TIMEOUT manquante}"
|
||||
: "${BACKUP_LOG_DIR:?Variable BACKUP_LOG_DIR manquante}"
|
||||
@@ -87,7 +96,7 @@ for DB in "${DBS_ARRAY[@]}"; do
|
||||
done
|
||||
|
||||
IA_SSH="${BACKUP_REMOTE_USER}@${BACKUP_REMOTE_HOST}"
|
||||
RETENTION_DAYS=10
|
||||
RETENTION_DAYS="${BACKUP_RETENTION_DAYS:-10}"
|
||||
BACKUP_REMOTE_SSH_PORT="${BACKUP_REMOTE_SSH_PORT:-22}"
|
||||
BACKUP_KNOWN_HOSTS_STRICT="${BACKUP_KNOWN_HOSTS_STRICT:-yes}"
|
||||
BACKUP_KNOWN_HOSTS_FILE="${BACKUP_KNOWN_HOSTS_FILE:-${HOME}/.ssh/known_hosts}"
|
||||
|
||||
@@ -44,13 +44,23 @@ set +a
|
||||
: "${CHECK_MAX_TIME:?Variable CHECK_MAX_TIME manquante}"
|
||||
: "${APP_URLS:?Variable APP_URLS manquante}"
|
||||
|
||||
[[ "$CHECK_CONNECT_TIMEOUT" =~ ^[0-9]+$ ]] || {
|
||||
echo "ERROR: Variable CHECK_CONNECT_TIMEOUT invalide" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
[[ "$CHECK_MAX_TIME" =~ ^[0-9]+$ ]] || {
|
||||
echo "ERROR: Variable CHECK_MAX_TIME invalide" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#######################################
|
||||
# Sites à vérifier
|
||||
#######################################
|
||||
|
||||
read -r -a SITES <<< "$APP_URLS"
|
||||
|
||||
SCHEME="http"
|
||||
SCHEME="${APP_SCHEME:-http}"
|
||||
CONNECT_TIMEOUT="${CHECK_CONNECT_TIMEOUT}"
|
||||
MAX_TIME="${CHECK_MAX_TIME}"
|
||||
|
||||
@@ -75,6 +85,16 @@ DISCORD_PING="${DISCORD_PING:-@here}"
|
||||
|
||||
SUMMARY_LINES=()
|
||||
FAILURES=0
|
||||
TMPFILES=()
|
||||
|
||||
cleanup() {
|
||||
local tmpfile
|
||||
for tmpfile in "${TMPFILES[@]}"; do
|
||||
[[ -n "$tmpfile" ]] || continue
|
||||
rm -f -- "$tmpfile"
|
||||
done
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
#######################################
|
||||
# Logging
|
||||
@@ -158,6 +178,7 @@ check_site() {
|
||||
local http_code curl_exit err
|
||||
local stderr
|
||||
stderr="$(mktemp)"
|
||||
TMPFILES+=("$stderr")
|
||||
|
||||
http_code="$(
|
||||
curl -sS -o /dev/null \
|
||||
@@ -170,15 +191,12 @@ check_site() {
|
||||
|
||||
if [[ "$curl_exit" -ne 0 ]]; then
|
||||
err="$(head -n 1 "$stderr" | tr -d '\r')"
|
||||
rm -f "$stderr"
|
||||
|
||||
log_line "DOWN" "$host" "curl exit=$curl_exit : ${err:-"(aucun)"}"
|
||||
add_summary_line "$host" "DOWN" "DOWN - curl"
|
||||
return 1
|
||||
fi
|
||||
|
||||
rm -f "$stderr"
|
||||
|
||||
if [[ "$http_code" =~ ^[0-9]{3}$ ]]; then
|
||||
if [[ "$http_code" -ge 200 && "$http_code" -le 399 ]]; then
|
||||
log_line "OK" "$host" "HTTP $http_code"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
umask 077
|
||||
|
||||
###############################################################################
|
||||
# rebuild-bdd-recette.sh
|
||||
@@ -49,6 +50,10 @@ set +a
|
||||
# Variables obligatoires
|
||||
###############################################################################
|
||||
: "${ENV_NAME:?Variable ENV_NAME manquante}"
|
||||
[[ "$ENV_NAME" =~ ^[a-zA-Z0-9_-]+$ ]] || {
|
||||
echo "Variable ENV_NAME invalide : $ENV_NAME" >&2
|
||||
exit 1
|
||||
}
|
||||
: "${PGHOST:?Variable PGHOST manquante}"
|
||||
: "${PGPORT:?Variable PGPORT manquante}"
|
||||
: "${PGUSER:?Variable PGUSER manquante}"
|
||||
@@ -110,6 +115,7 @@ cleanup() {
|
||||
"${FILTERED_ROLES_FILE:-}" \
|
||||
"${ROLES_CREATE_LIST:-}" \
|
||||
"${ROLES_APPLY_FILE:-}"
|
||||
rm -rf "${LOCAL_RESTORE_DIR:-}" 2>/dev/null || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
@@ -150,14 +156,14 @@ build_excluded_roles_regex() {
|
||||
# Envoi Discord
|
||||
#
|
||||
# Envoi simple d'un message texte via webhook Discord.
|
||||
# Si WEBHOOK_URL n'est pas défini, on ignore silencieusement l'envoi.
|
||||
# Si DISCORD_WEBHOOK_URL n'est pas défini, on ignore silencieusement l'envoi.
|
||||
###############################################################################
|
||||
send_discord_message() {
|
||||
local message="$1"
|
||||
local payload=""
|
||||
|
||||
[[ -n "$DISCORD_WEBHOOK_URL" ]] || {
|
||||
log "WEBHOOK_URL non défini : notification Discord ignorée."
|
||||
log "DISCORD_WEBHOOK_URL non défini : notification Discord ignorée."
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user