# RecetteScripts Scripts Bash permettant d’automatiser la gestion d’un environnement **PostgreSQL de recette**. Ces scripts permettent : * la **sauvegarde automatisée des bases** * la **surveillance de la disponibilité des applications** * la **reconstruction d’une base à partir d’un 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 d’un 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 : ```bash 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 : ```bash ssh-copy-id -i ~/.ssh/id_backup_postgres.pub user@serveur ``` Exemple : ```bash 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 : ```bash 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 : ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_backup_postgres chmod 644 ~/.ssh/id_backup_postgres.pub ``` --- # 4. Configuration Chaque script possède un **fichier d’exemple** : ``` 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 l’exé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 d’un 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 ---