Files
Malio-ops/RecetteScripts
2026-03-13 08:55:11 +01:00
..
2026-03-13 08:55:11 +01:00
2026-03-13 08:55:11 +01:00
2026-03-13 08:55:11 +01:00
2026-03-13 08:55:11 +01:00
2026-03-13 08:55:11 +01:00

RecetteScripts

Scripts Bash permettant dautomatiser la gestion dun environnement PostgreSQL de recette.

Ces scripts permettent :

  • la sauvegarde automatisée des bases
  • la surveillance de la disponibilité des applications
  • la reconstruction dune base à partir dun dump

Chaque script possède son propre fichier .env dédié afin de séparer les configurations.(un global.env.exemple est disponible à la racine du projet)


0. Arborescence du projet

RecetteScripts
│
├── backup-bdd-recette.sh        # script de sauvegarde PostgreSQL
├── backup.env.exemple           # exemple de configuration backup
│
├── check-statut-recette.sh      # script de monitoring des applications
├── check-statut.env.exemple     # exemple de configuration monitoring
│
├── rebuild-bdd-recette.sh       # script de restauration PostgreSQL
├── rebuild.env.exemple          # exemple de configuration restauration
│
└── README.md

1. Principe général

Les scripts fonctionnent indépendamment mais utilisent le même principe :

  1. chargement dun fichier .env
  2. vérification des variables obligatoires
  3. exécution de la tâche principale
  4. génération de logs
  5. notification Discord (optionnelle)

2. Prérequis

Environnement Linux recommandé.

Packages nécessaires :

postgresql-client
curl
jq
ssh
scp

Commandes PostgreSQL requises :

pg_dump
pg_dumpall
pg_restore
psql
createdb
dropdb

3 Connexion SSH

Une connexion SSH avec clé privée est nécessaire afin de permettre les transferts automatisés de fichiers vers le serveur distant (dump PostgreSQL, rôles, etc.).

Génération de la clé SSH

Sur la machine exécutant les scripts :

ssh-keygen -t ed25519 -f ~/.ssh/id_backup_postgres

Explication :

  • -t ed25519 : algorithme recommandé
  • -f : chemin de la clé

Deux fichiers seront créés :

~/.ssh/id_backup_postgres
~/.ssh/id_backup_postgres.pub

Copier la clé sur le serveur distant

Méthode recommandée :

ssh-copy-id -i ~/.ssh/id_backup_postgres.pub user@serveur

Exemple :

ssh-copy-id -i ~/.ssh/id_backup_postgres.pub backup@192.168.1.50

Vérifier la connexion

Tester la connexion sans mot de passe :

ssh -i ~/.ssh/id_backup_postgres backup@192.168.1.50

La connexion doit fonctionner sans demander de mot de passe.


Sécuriser les permissions

Les permissions doivent être restreintes :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_backup_postgres
chmod 644 ~/.ssh/id_backup_postgres.pub

4. Configuration

Chaque script possède un fichier dexemple :

backup.env.exemple
check-statut.env.exemple
rebuild.env.exemple

Pour utiliser les scripts :

cp backup.env.exemple .env

Puis modifier les variables.


5. Script : backup-bdd-recette.sh

Script :

Objectif

Sauvegarder plusieurs bases PostgreSQL et transférer les dumps vers un serveur distant.


Fonctionnement

Le script :

  1. charge la configuration .env
  2. vérifie les dépendances
  3. empêche lexécution simultanée (lock)
  4. exporte les rôles PostgreSQL
  5. crée un dump de chaque base
  6. transfère les dumps vers un serveur distant
  7. applique une rotation des sauvegardes
  8. envoie un résumé sur Discord

Format des fichiers

Dump base :

base_TIMESTAMP.dump

Export utilisateurs :

user_TIMESTAMP.sql

Rotation automatique

Suppression des sauvegardes plus anciennes que :

10 jours

Exécution

./backup-bdd-recette.sh

6. Script : check-statut-recette.sh

Script :

Objectif

Vérifier la disponibilité des applications web.

Ce script agit comme un mini système de monitoring.


Vérifications

Pour chaque application :

  1. résolution DNS
  2. requête HTTP
  3. analyse du code HTTP

Codes valides :

200 → 399

Exemple de configuration

APP_URLS="ferme.malio-dev.fr sirh.malio-dev.fr inventory.malio-dev.fr"

Logs

Fichier généré :

app_health_YYYY-MM-DD.log

Format :

date | statut | host | détail

Exemple de notification Discord

CHECK APP RECETTE 🟢

✅ ferme.malio-dev.fr : OK
✅ sirh.malio-dev.fr : OK
✅ inventory.malio-dev.fr : OK

7. Script : rebuild-bdd-recette.sh

Script :

Objectif

Restaurer une base PostgreSQL à partir dun dump distant.


Fonctionnement

Le script :

  1. charge la configuration .env
  2. installe PostgreSQL si nécessaire
  3. démarre le service PostgreSQL
  4. demande la base à restaurer
  5. récupère le dernier dump sur le serveur distant
  6. récupère le dernier export des rôles
  7. crée les rôles manquants
  8. supprime la base existante si nécessaire
  9. restaure la base via pg_restore
  10. envoie une notification Discord

Sélection de la base

Les bases disponibles sont lues depuis :

DBS="sirh inventory ferme"

Exemple :

1) sirh
2) inventory
3) ferme

Commande utilisée pour la restauration

pg_restore
--clean
--if-exists
--no-owner
--no-privileges

Ces options évitent les conflits entre environnements.


8. Logs

Les scripts produisent des logs détaillés :

backup logs
restore logs
app health logs

Ces logs permettent :

  • diagnostic des erreurs
  • audit des opérations
  • suivi des backups

9. Automatisation recommandée

Backup et check quotidien

0 19 * * * /scripts/backup-bdd-recette.sh
0 19 * * * /scripts/check-statut-recette.sh

10. Bonnes pratiques

Recommandé :

  • isoler le serveur de stockage
  • vérifier régulièrement les restaurations