papanito.borg

Rôle Ansible "papanito.borg"

Rôle Ansible Score qualité Ansible Rôle Ansible Problèmes GitHub Demandes de tirage GitHub

Le rôle Ansible permet d'installer et de configurer des sauvegardes régulières avec borg. Le rôle effectue les actions suivantes :

  • [Optionnel] Supprimer le référentiel existant

  • Initier un référentiel à protocol://backup_server:target_dir ou target_dir

    Notes

    Si le répertoire target_dir existe déjà, l'initialisation sera ignorée. Si backup_server n'est pas spécifié, le rôle suppose une sauvegarde locale, c'est-à-dire vers un répertoire local.

  • Créer un service systemd qui exécute régulièrement (selon le backup_schedule) le script borg.sh de borgbackup.org

  • Un script borg individuel nommé automatic-backup-{{service_name}}.sh sera créé dans /opt/borg_backup, personnalisé avec :

    • backup_source_dir
    • backup_exclude_file ou backup_exclude_list
    • backup_schedule

Exigences

Aucune

Variables du rôle

Voici toutes les variables :

Paramètre Description Valeur par défaut
backup_server Nom du serveur de sauvegarde - s'il n'est pas défini, il suppose une sauvegarde locale -
backup_user Nom de l'utilisateur pour se connecter au serveur -
backup_port Port pour se connecter à backup_server -
protocol Protocole utilisé pour se connecter à backup_server ssh
backup_name [obligatoire] Nom de la sauvegarde
backup_encryption_key [obligatoire] Mot de passe pour la clé de cryptage utilisant repokey -
backup_encryption_method Méthode de cryptage de Borg, actuellement seul repokey est implémenté repokey
target_dir Répertoire cible des sauvegardes sur le backup_server "./backups/{{ backup_name }}"
backup_delete AVERTISSEMENT Si défini sur true, le référentiel de sauvegarde existant sera supprimé false
backup_create Création de référentiel. Vous pouvez utiliser le rôle pour explicitement supprimer un référentiel existant en exécutant le rôle avec -e backup_delete=true -e backup_create=false true
backup_schedule Notation de programme systemd pour la sauvegarde quotidienne *-*-* 03:00:00
backup_include_list Liste des répertoires sources à sauvegarder -
backup_exclude_file EXCLUDEFILE contenant les motifs à exclure
Prend la priorité sur backup_exclude_list
-
backup_exclude_list Liste de motifs qui seront ajoutés comme --exclude 'PATTERN' -

Les paramètres suivants sont liés au fichier de service systemd :

Paramètre Description Valeur par défaut
systemd_target_dir Emplacement où copier les fichiers .service /etc/systemd/system/
borg_systemd_user Utilisateur pour le service systemd backup
borg_systemd_group Groupe pour le service systemd backup
borg_systemd_on_failure S'il est défini, cela créera une entrée [OnFailure] dans le fichier de service -
systemd_script_mode Mode du fichier script 0774
systemd_service_mode Mode du fichier de service 0644

Le script déployé définit également les options pour prune comme décrit dans borg prune. Les valeurs qui attendent un nombre mais dont la variable n'est pas définie, l'option n'est pas fournie.

Paramètre Description Valeur par défaut
backup_prune_dryrun -n, --dry-run ne pas changer le référentiel false
backup_prune_force --force forcer la suppression des archives corrompues false
backup_prune_stats -s, --stats imprimer des statistiques sur l'archive supprimée true
backup_prune_list --list sortie de la liste verbeuse des archives conservées/supprimées true
backup_prune_keep_within --keep-within INTERVAL garder toutes les archives dans cet intervalle de temps -
backup_prune_keep_last --keep-last, --keep-secondly nombre d'archives secondes à garder -
backup_prune_keep_minutely --keep-minutely nombre d'archives à conserver chaque minute -
backup_prune_keep_hourly -H, --keep-hourly nombre d'archives à conserver chaque heure -
backup_prune_keep_daily -d, --keep-daily nombre d'archives à conserver chaque jour -
backup_prune_keep_weekly -w, --keep-weekly nombre d'archives à conserver chaque semaine -
backup_prune_keep_monthly -m, --keep-monthly nombre d'archives à conserver chaque mois -
backup_prune_keep_yearly -y, --keep-yearly nombre d'archives à conserver chaque année -
backup_prune_save_space --save-space fonctionner plus lentement, mais utiliser moins d'espace false

Pour garder les informations sensibles cachées, je recommande d'utiliser ansible-vault.

Vous pouvez définir le fichier de mot de passe dans ansible.cfg pour qu'aucun paramètre de coffre-fort ne doive être spécifié. Ainsi, la variable chiffrée backup_encryption_key peut être créée comme suit :

ansible-vault encrypt_string 'SupersecretPa$$phrase' --name 'backup_encryption_key'

Dépendances

Aucune

Exemples

Exemple de Playbook pour une sauvegarde à distance

Voici un exemple d'utilisation de votre rôle (par exemple, avec des variables passées en tant que paramètres) :

- hosts: localhost
  vars:
  - backup_server: borg.intra
  - backup_user: borguser
  - backup_name: mybackupname
  - backup_encryption_key: test
  - backup_port: 23
  - target_dir: "/var/backups/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1
  
  roles:
  - role: papanito.borg

Cela créera une sauvegarde à ssh://[email protected]:/var/backup/mybackupname et les fichiers systemd suivants :

  • /opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh (script de sauvegarde)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.service (fichier de service systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer (fichier de minuteurs systemd)

Exemple de Playbook pour une sauvegarde locale

Voici un autre exemple d'utilisation de votre rôle :

- hosts: localhost
  vars:
  - backup_name: mybackupname
  - backup_encryption_key: test
  - target_dir: "/var/backup/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1

Cela créera une sauvegarde à /var/backup/mybackupname et les fichiers systemd suivants :

  • /opt/borg_backups/automatic-backup-mybackupname-local.sh (script de sauvegarde)
  • /etc/systemd/system/automatic-backup-mybackupname-local.service (fichier de service systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-local.timer (fichier de minuteurs systemd)

Licence

C'est un logiciel libre, publié sous les termes de la licence Apache v2.

Informations sur l'auteur

Écrit par Papanito - Gitlab / Github

À propos du projet

Ansible role do install and setup regular backups with borg

Installer
ansible-galaxy install papanito.borg
Licence
apache-2.0
Téléchargements
187
Propriétaire
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.