Sauvegarde des Dashboards Grafana
Ce rôle sauvegarde tous les dashboards Grafana via l'API vers deux NAS en parallèle.
Vue d’ensemble
Ce rôle sauvegarde tous les dashboards Grafana via l’API vers deux NAS en parallèle. Il télécharge les définitions JSON des dashboards, crée des archives compressées et gère automatiquement la rétention en ne conservant que les 5 dernières sauvegardes par NAS. Le format JSON exporté est compatible avec la fonctionnalité d’import de Grafana.
Ce que fait ce rôle
- Vérifie l’existence des répertoires de sauvegarde sur les deux points de montage NAS
- Récupère la liste des dashboards depuis l’API Grafana (
/api/search?type=dash-db) - Crée un répertoire temporaire pour la mise en tampon des fichiers de dashboards
- Télécharge chaque dashboard individuellement via l’UID du dashboard (
/api/dashboards/uid/{uid}) - Extrait le JSON pur (supprime les métadonnées du wrapper API)
- Enregistre chaque dashboard dans un fichier JSON séparé avec un nom de fichier normalisé
- Crée une archive tar.gz horodatée de tous les fichiers JSON
- Copie l’archive sur les deux NAS
- Nettoie les fichiers temporaires et l’archive locale
- Supprime les anciennes sauvegardes, en ne conservant que les 5 plus récentes par NAS
Variables du rôle
| Variable | Description |
|---|---|
vault_grafana_ansibleuser_api_token | Token API Grafana (depuis le vault) |
grafana_dashboards_backup_host | Hôte et port Grafana |
grafana_dashboards_backup_validate_certs | Valider les certificats SSL |
grafana_dashboards_backup_syno_mount_point | Destination de sauvegarde sur le NAS Synology |
grafana_dashboards_backup_prxmxomv_mount_point | Destination de sauvegarde sur le NAS Proxmox OMV |
Notes
- Les dashboards sont enregistrés en JSON pur (sans métadonnées du wrapper API), importables directement via l’interface Grafana
- La structure des dossiers n’est pas préservée — utilisez les noms de dossiers dans les noms de fichiers à titre de référence
- Les configurations de sources de données ne sont PAS incluses (utilisez
grafana_datasource_createséparément)