Files
Malio-ops/README.md
2026-03-19 11:04:57 +01:00

243 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MALIO-OPS
Ce dépôt centralise lensemble des **scripts dexploitation, de maintenance et dautomatisation** utilisés dans linfrastructure 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 dexploitation**
* 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 lespace 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 dentré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 :
```bash
global.env.exemple
```
Ce fichier concerne la configuration legacy de `RecetteScripts`.
Utilisation :
```bash
cp global.env.exemple global.env
```
Pour la configuration de `RebuildBdd`, voir la documentation dédiée :
```bash
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 et `known_hosts`
## Déploiement Ubuntu Server
Le dépôt est maintenant pensé prioritairement pour des cibles **Ubuntu Server** :
* bootstrap `RebuildBdd` basé sur `apt`, `systemctl` et `sudo -n`
* clients SSH en mode batch avec `StrictHostKeyChecking=yes` quand le mode strict est actif
* exemples `.env` mis à jour pour expliciter les ports SSH, `known_hosts` et 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 :
```bash
CHANGELOG.md
```
---
# Positionnement actuel
* `RebuildBdd` = **standard cible**
* `RecetteScripts` = **legacy en cours de migration**
* Objectif : convergence vers une **chaîne unique, robuste et automatisable (web/API)**
---
<details>
<summary style="list-style: none; cursor: pointer;">
<strong>EggMaster</strong>
</summary>
Un message est disperse dans les `README` du depot.
Ordre de reconstruction :
1. `README.md`
2. `BackupVaultWarden/README.md`
3. `CheckStorage/README.md`
4. `RebuildBdd/README.md`
5. `RecetteScripts/README.md`
La commande de dechiffrement n'est pas donnee directement.
Elle se reconstruit aussi via des questions cachees dans les `README`.
<details>
<summary style="list-style: none; cursor: pointer;">Question 1</summary>
Quelle commande shell permet d'afficher exactement une chaine, sans interpretation particuliere, avant de la transmettre a une autre commande ?
</details>
<details>
<summary style="list-style: none; cursor: pointer;">Indice commande 1</summary>
```text
printf
```
</details>
<details>
<summary style="list-style: none; cursor: pointer;">Fragment 1</summary>
```text
YmllbiB2dSB0dSBtJ2FzIHRyb3V2ZXIgbW9pIG
```
</details>
</details>