Configuration Automatisée de Sauvegarde Plakar
Architecture de Sauvegarde Plakar
Cette page détaille la configuration technique du système de sauvegarde. Puisque les fichiers sources Ansible ne sont pas accessibles à tous les utilisateurs, les extraits de code et leurs explications sont regroupés ici.
1. Vue d'ensemble
L'architecture s'appuie sur : - Plakar : Outil de sauvegarde chiffré et dédupliqué. - SSHFS : Montage dynamique du stockage distant via un bastion. - Ansible : Automatisation du déploiement et de la maintenance.
2. Déploiement de l'Agent (playbook-backup_agent.yaml)
Ce playbook est exécuté sur tous les serveurs à sauvegarder. Il installe Plakar et configure la planification.
Extrait du Playbook : Installation et Configuration
- name: Installer et configurer Plakar pour les sauvegardes
hosts: serveur
become: true
tasks:
- name: Installer les dépendances (curl, gnupg2, sshfs)
ansible.builtin.package:
name: [curl, gnupg2, sshfs]
state: present
- name: Ajouter le dépôt officiel Plakar
ansible.builtin.shell: |
curl -fsSL https://packages.plakar.io/keys/plakar.gpg | gpg --dearmor -o /usr/share/keyrings/plakar.gpg
echo "deb [signed-by=/usr/share/keyrings/plakar.gpg] https://packages.plakar.io/deb stable main" > /etc/apt/sources.list.d/plakar.list
apt-get update
- name: Installer Plakar
ansible.builtin.package:
name: plakar
state: present
- name: Déployer le script de sauvegarde
ansible.builtin.copy:
src: ansible-script-backup.sh
dest: /opt/ansible/ansible-script-backup.sh
mode: '0700'
Planification Systemd
L'agent utilise un duo Service + Timer pour s'exécuter chaque semaine.
Le Timer (/etc/systemd/system/plakar-backup.timer) :
[Unit]
Description=Run Plakar Backup every Wednesday at 3AM
[Timer]
OnCalendar=Wed *-*-* 03:00:00
Persistent=true
[Install]
WantedBy=timers.target
Persistent=true garantit que si le serveur était éteint à 3h, la sauvegarde se lance dès le démarrage suivant.
3. Le Script de Sauvegarde (ansible-script-backup.sh)
C'est le moteur de la sauvegarde. Il gère la connexion réseau et l'exécution de Plakar.
#!/bin/bash
# (Extraits choisis pour la clarté)
# 1. Montage SSHFS via Bastion
sshfs "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" "$LOCAL_MOUNT_POINT" \
-o "IdentityFile=$SSH_KEY_PATH",reconnect,allow_other \
-o ProxyCommand="ssh -W %h:%p $REMOTE_USER@$BASTION_HOST"
# 2. Vérification de la nécessité (Seuil de 7 jours)
check_backup_needed() {
last_date=$(plakar at "$REPO" ls -tag "$(hostname)" | awk '$NF == "/" {print $1; exit}')
# Calcule si le dernier backup a plus de 604800 secondes (7j)
}
# 3. Exécution avec exclusions
plakar at "$REPO" backup -tag "$(hostname)" -concurrency 1 \
-ignore "/proc" -ignore "/sys" -ignore "/tmp" -ignore "/var/cache" \
-ignore "*.mp4" -ignore "*.mkv" \
"/"
4. Maintenance Centralisée (playbook-backup_maintenance.yaml)
Ce playbook tourne sur un serveur maître pour nettoyer les anciennes sauvegardes.
Logique de Nettoyage (Pruning)
Le point critique est l'analyse Python intégrée pour protéger les données :
# Analyse par tag (hostname)
for snap in snapshots:
age = (now - snap_date).days
if age > 120:
old_count += 1
# Fail-safe : On ne supprime que si on garde au moins 3 snapshots
if snapshots_older_than_120d > 0 and remaining_after_prune >= 3:
execute_prune()
Tâches de maintenance globales
- name: Libérer les verrous
ansible.builtin.shell: rm -f "{{ local_mount_point }}/locks/"*
- name: Maintenance structurelle Plakar
ansible.builtin.command: plakar at "{{ local_mount_point }}" maintenance
maintenance de Plakar réorganise les données et supprime physiquement les blocs de données qui ne sont plus référencés par aucun snapshot.
5. Guide d'Exploitation
Lister les sauvegardes d'un hôte précis
Restaurer un dossier
Abstract
Sécurité : Le script de maintenance arrête temporairement l'interface Web Plakar (plakar-web) pour éviter toute corruption de base de données pendant le nettoyage.