2 Commits
Author SHA1 Message Date
ucef 645d07fdfc feat(backup): update DB UAT port
AS Talange CI/CD Pipeline / Deploy to Test Environment (push) Successful in 2m1s
AS Talange CI/CD Pipeline / Build & Run Unit Tests (push) Successful in 4m57s
2026-09-04 08:42:55 +02:00
ucef e1cffb8fc8 feat(backup): add automatic database restoration and RGPD anonymization for UAT environment (10.8.0.2) 2026-09-04 08:39:21 +02:00
+71
View File
@@ -31,6 +31,14 @@ DB_HOST="${POSTGRES_HOST:-localhost}"
DB_PORT="${POSTGRES_PORT:-5432}" DB_PORT="${POSTGRES_PORT:-5432}"
CONTAINER_NAME="${DOCKER_CONTAINER_NAME:-astalange_db}" CONTAINER_NAME="${DOCKER_CONTAINER_NAME:-astalange_db}"
# Variables UAT
ENABLE_UAT_RESTORE="${ENABLE_UAT_RESTORE:-true}"
UAT_DB_HOST="${UAT_DB_HOST:-10.8.0.2}"
UAT_DB_PORT="${UAT_DB_PORT:-5433}"
UAT_DB_NAME="${UAT_DB_NAME:-astalange}"
UAT_DB_USER="${UAT_DB_USER:-myuser}"
UAT_DB_PASSWORD="${UAT_DB_PASSWORD:-mypassword}"
# Configuration du transfert distant vers le VPS (optionnel) # Configuration du transfert distant vers le VPS (optionnel)
ENABLE_REMOTE_COPY="${ENABLE_REMOTE_COPY:-false}" ENABLE_REMOTE_COPY="${ENABLE_REMOTE_COPY:-false}"
REMOTE_HOST="${REMOTE_HOST:-}" REMOTE_HOST="${REMOTE_HOST:-}"
@@ -98,6 +106,69 @@ if [ "$STATUS" = "SUCCESS" ]; then
fi fi
fi fi
# 2b. Restauration et Anonymisation vers la BDD UAT (10.8.0.2)
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_UAT_RESTORE" = "true" ]; then
log "Démarrage de la restauration et l'anonymisation sur UAT (${UAT_DB_USER}@${UAT_DB_HOST}:${UAT_DB_PORT}/${UAT_DB_NAME})..."
ANONYMIZE_SQL="
UPDATE adherent SET
nom = 'Nom_Adherent_' || id,
prenom = 'Prenom_Adherent_' || id,
email = 'adherent' || id || '@test.local',
telephone = '06' || LPAD((id)::text, 8, '0'),
lieu_naissance = 'Ville_' || id,
representant_legal = CASE
WHEN representant_legal IS NOT NULL AND TRIM(representant_legal) <> ''
THEN 'Representant_' || id
ELSE representant_legal
END;
UPDATE pre_inscription SET
nom = 'Nom_PreInscr_' || id,
prenom = 'Prenom_PreInscr_' || id,
email = 'preinscr' || id || '@test.local',
telephone = '06' || LPAD((id)::text, 8, '0'),
lieu_naissance = 'Ville_' || id,
representant_legal = CASE
WHEN representant_legal IS NOT NULL AND TRIM(representant_legal) <> ''
THEN 'Representant_PreInscr_' || id
ELSE representant_legal
END;
UPDATE educateur SET
nom = 'Nom_Educ_' || id,
prenom = 'Prenom_Educ_' || id,
email = 'educ' || id || '@test.local',
telephone = '06' || LPAD((id)::text, 8, '0');
"
RESTORE_SUCCESS=false
if command -v psql >/dev/null 2>&1; then
log "Restauration UAT via psql local..."
if gunzip -c "$DUMP_PATH" | PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
log "Exécution des requêtes d'anonymisation sur UAT..."
if PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
RESTORE_SUCCESS=true
fi
fi
elif command -v docker >/dev/null 2>&1; then
log "Restauration UAT via conteneur Docker postgres..."
if gunzip -c "$DUMP_PATH" | docker run --rm -i --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
log "Exécution des requêtes d'anonymisation sur UAT via Docker..."
if docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
RESTORE_SUCCESS=true
fi
fi
fi
if [ "$RESTORE_SUCCESS" = "true" ]; then
log "✅ Restauration et anonymisation UAT réussies avec succès !"
else
log "⚠️ AVERTISSEMENT: Impossible d'effectuer la restauration/anonymisation UAT."
fi
fi
# 3. Transfert sécurisé RSYNC / SCP vers le serveur VPS (Optionnel) # 3. Transfert sécurisé RSYNC / SCP vers le serveur VPS (Optionnel)
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_REMOTE_COPY" = "true" ] && [ -n "$REMOTE_HOST" ]; then if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_REMOTE_COPY" = "true" ] && [ -n "$REMOTE_HOST" ]; then
log "Transfert du dump vers le serveur VPS distant (${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_BACKUP_DIR})..." log "Transfert du dump vers le serveur VPS distant (${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_BACKUP_DIR})..."