Reviewed-on: #17
MALIO-OPS
Ce dépôt centralise l’ensemble des scripts d’exploitation, de maintenance et d’automatisation utilisés dans l’infrastructure MALIO. Il constitue une base unique de versionnement, standardisation et industrialisation des opérations techniques (backup, supervision, PostgreSQL, reconstruction de bases).
Objectif
Le dépôt permet de :
- assurer le versionnement et la traçabilité des scripts
- garantir des exécutions reproductibles et fiables
- mutualiser les bonnes pratiques d’exploitation
- centraliser la configuration et la documentation technique
- faciliter le déploiement automatisé des environnements
Structure du dépôt
Organisation par domaine fonctionnel :
CheckStorage
- Surveillance de l’espace disque
- Alerting via Discord
- Vérification proactive des capacités
BackupVaultWarden
- Sauvegarde des données Vaultwarden
- Archivage et transfert distant sécurisé
- Gestion des logs et rétention
RecetteScripts
- Scripts legacy pour environnement de recette
- Backup PostgreSQL
- Monitoring applicatif
- Rebuild simplifié
⚠️ Dossier en cours de transition vers RebuildBdd
RebuildBdd
- Nouvelle architecture standardisée de reconstruction PostgreSQL
- Gestion multi-cibles
- Exécution non interactive (compatible web/API)
- Retour structuré (JSON + logs)
Focus : RebuildBdd
Ce module constitue le socle principal de reconstruction de bases PostgreSQL.
Scripts principaux
-
run-rebuild-bdd.sh→ Point d’entrée (local / IA / interface web) -
rebuild-bdd-core.sh→ Logique métier de restauration (dump + rôles + base) -
bootstrap-target-host.sh→ Préparation automatique de la machine cible -
create-target-config.sh→ Génération des configurations par environnement
Sous-dossiers
-
Checkup/→ Vérification des prérequis (PostgreSQL, accès, rôles) -
Config/→ Fichiers de configuration globaux et par cible
Fonctionnalités clés
- Installation automatique PostgreSQL si absent
- Vérification et création des rôles
- Restauration complète (rôles + base)
- Gestion des dumps distants
- Mode sécurisé (validation des paramètres)
- Logs exploitables + sortie JSON (intégration web)
👉 Documentation détaillée : RebuildBdd/README.md
Prérequis
Les scripts nécessitent :
Outils de base
- bash
- jq
- curl
- ssh
- scp
Outils optionnels (selon usage)
- PostgreSQL (
psql,pg_dump,pg_restore) - tar
- systemd (gestion services)
Configuration
Configuration globale
Un modèle est fourni :
global.env.exemple
Ce fichier concerne la configuration legacy de RecetteScripts.
Utilisation :
cp global.env.exemple global.env
Pour la configuration de RebuildBdd, voir la documentation dédiée :
RebuildBdd/README.md
Configuration locale
- Chaque module peut contenir son propre
.env - Les variables sensibles doivent être définies localement
⚠️ Règles strictes :
- Aucun secret en versionné
- Utiliser
.gitignore - Cloisonner les accès (SSH, DB, webhooks)
Sécurité
- Authentification SSH par clé obligatoire
- Validation des paramètres en entrée (scripts rebuild)
- Isolation des environnements (cibles distinctes)
- Logs sans données sensibles
- Validation stricte des hôtes SSH recommandée et utilisée par défaut sur les scripts durcis
- Permissions restrictives recommandées sur les
.env, clés privées etknown_hosts
Déploiement Ubuntu Server
Le dépôt est maintenant pensé prioritairement pour des cibles Ubuntu Server :
- bootstrap
RebuildBddbasé surapt,systemctletsudo -n - clients SSH en mode batch avec
StrictHostKeyChecking=yesquand le mode strict est actif - exemples
.envmis à jour pour expliciter les ports SSH,known_hostset les timeouts
Bonnes pratiques
- Scripts idempotents (relançables sans effet de bord)
- Logs systématiques
- Gestion des erreurs (
set -euo pipefail) - Centralisation des configurations
- Utilisation de formats structurés (JSON)
Documentation
-
Documentation détaillée par module (README locaux)
-
Historique des évolutions :
CHANGELOG.md
Positionnement actuel
RebuildBdd= standard cibleRecetteScripts= legacy en cours de migration- Objectif : convergence vers une chaîne unique, robuste et automatisable (web/API)
EggMaster
Un message est disperse dans les README du depot.
Ordre de reconstruction :
README.mdBackupVaultWarden/README.mdCheckStorage/README.mdRebuildBdd/README.mdRecetteScripts/README.md
La commande de dechiffrement n'est pas donnee directement.
Elle se reconstruit aussi via des questions cachees dans les README.
Question 1
Quelle commande shell permet d'afficher exactement une chaine, sans interpretation particuliere, avant de la transmettre a une autre commande ?
Indice commande 1
printf
Fragment 1
YmllbiB2dSB0dSBtJ2FzIHRyb3V2ZXIgbW9pIG