Backup multi-bases dynamique + politique de rétention #1

Open
opened 2026-02-22 11:36:10 +00:00 by Damien · 0 comments
Owner

Contexte

Actuellement le flow ne sauvegarde qu'une seule base (netbox) avec des paramètres hardcodés dans deploy.py. Aucune gestion de rétention n'existe : les backups s'accumulent dans Garage sans nettoyage.

Objectifs

1. Backup multi-bases dynamique

Remplacer le déploiement statique par une configuration externe (fichier YAML) listant toutes les bases à sauvegarder. Le flow itère sur cette liste et backup chaque base.

Exemple de config envisagé :

databases:
  - name: netbox
    host: postgresql.taila5ad8.ts.net
    user: netbox
    password_block: netbox-db-password

  - name: gitea
    host: postgresql.taila5ad8.ts.net
    user: gitea
    password_block: gitea-db-password

2. Politique de rétention

Ajouter une task de nettoyage qui s'exécute après chaque backup, avec la logique suivante :

  • Mois en cours → garder toutes les sauvegardes (max ~4 par base avec le cron hebdo actuel)
  • Mois précédents → garder uniquement la dernière sauvegarde de chaque mois
  • Plus de 12 mois → supprimer

La politique de rétention doit être configurable dans le même fichier YAML (ou un dédié), par exemple :

retention:
  keep_current_month: all
  keep_monthly: 12  # nombre de mois à conserver

Périmètre technique

  • Ajouter un fichier de config YAML (config.yaml ou backup_config.yaml)
  • Adapter backup.py pour lire la config et boucler sur les bases
  • Ajouter une task apply_retention qui liste les objets S3 par préfixe/base et applique la politique
  • Adapter deploy.py en conséquence
## Contexte Actuellement le flow ne sauvegarde qu'une seule base (netbox) avec des paramètres hardcodés dans `deploy.py`. Aucune gestion de rétention n'existe : les backups s'accumulent dans Garage sans nettoyage. ## Objectifs ### 1. Backup multi-bases dynamique Remplacer le déploiement statique par une configuration externe (fichier YAML) listant toutes les bases à sauvegarder. Le flow itère sur cette liste et backup chaque base. **Exemple de config envisagé :** ```yaml databases: - name: netbox host: postgresql.taila5ad8.ts.net user: netbox password_block: netbox-db-password - name: gitea host: postgresql.taila5ad8.ts.net user: gitea password_block: gitea-db-password ``` ### 2. Politique de rétention Ajouter une task de nettoyage qui s'exécute après chaque backup, avec la logique suivante : - **Mois en cours** → garder toutes les sauvegardes (max ~4 par base avec le cron hebdo actuel) - **Mois précédents** → garder uniquement la dernière sauvegarde de chaque mois - **Plus de 12 mois** → supprimer La politique de rétention doit être configurable dans le même fichier YAML (ou un dédié), par exemple : ```yaml retention: keep_current_month: all keep_monthly: 12 # nombre de mois à conserver ``` ## Périmètre technique - Ajouter un fichier de config YAML (`config.yaml` ou `backup_config.yaml`) - Adapter `backup.py` pour lire la config et boucler sur les bases - Ajouter une task `apply_retention` qui liste les objets S3 par préfixe/base et applique la politique - Adapter `deploy.py` en conséquence
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Damien/prefect-flows-pg-backup#1