243 lines
5.4 KiB
Markdown
243 lines
5.4 KiB
Markdown
# 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 :
|
||
|
||
```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>
|
||
|