papanito.borg

Ansible Rolle "papanito.borg"

Ansible Rolle Ansible Qualitätsbewertung Ansible Rolle GitHub Issues GitHub Pull Requests

Diese Ansible Rolle installiert und richtet regelmäßige Backups mit borg ein. Die Rolle erledigt Folgendes:

  • [Optional] Löschen des vorhandenen Repositories

  • Initialisierung eines Repositories unter protocol://backup_server:target_dir oder target_dir

    Hinweise

    Falls das Repository target_dir bereits existiert, wird die Initialisierung übersprungen. Wenn backup_server nicht angegeben ist, nimmt die Rolle ein lokales Backup an, d.h. in ein lokales Verzeichnis.

  • Erstellen eines systemd-Dienstes, der regelmäßig (gemäß backup_schedule) das Skript borg.sh von borgbackup.org ausführt.

  • Es wird ein individuelles borg-Skript namens automatic-backup-{{service_name}}.sh in /opt/borg_backup erstellt, das mit folgenden Parametern angepasst wird:

    • backup_source_dir
    • backup_exclude_file oder backup_exclude_list
    • backup_schedule

Anforderungen

Keine

Rollen-Variablen

Dies sind alle Variablen

Parameter Beschreibung Standardwert
backup_server Name des Backup-Servers - wenn nicht definiert, wird ein lokales Backup angenommen -
backup_user Name des Benutzers, der sich mit dem Server verbindet -
backup_port Port, um sich mit backup_server zu verbinden -
protocol Protokoll, das zur Verbindung mit backup_server verwendet wird ssh
backup_name [pflichtig] Name des Backups
backup_encryption_key [pflichtig] Passphrase für den Verschlüsselungsschlüssel mit repokey -
backup_encryption_method Borg Verschlüsselungsmethode, derzeit nur repokey implementiert repokey
target_dir Zielverzeichnis der Backups auf dem backup_server "./backups/{{ backup_name }}"
backup_delete WARNUNG Wenn auf true gesetzt, wird das vorhandene Backup-Repository gelöscht false
backup_create Erstellung des Repositories. Sie können die Rolle verwenden, um ein vorhandenes Repository explizit zu löschen, indem Sie die Rolle mit -e backup_delete=true -e backup_create=false ausführen true
backup_schedule Systemd-Plannotierung für das tägliche Backup *-*-* 03:00:00
backup_include_list Liste der Quellverzeichnisse für Backups -
backup_exclude_file EXCLUDEFILE, das Ausschlussmuster enthält
Hat Vorrang vor backup_exclude_list
-
backup_exclude_list Liste von Mustern, die als --exclude 'PATTERN' hinzugefügt werden -

Die folgenden Parameter beziehen sich auf die systemd-Dienstdatei:

Parameter Beschreibung Standardwert
systemd_target_dir Ort, an dem die .service-Dateien kopiert werden /etc/systemd/system/
borg_systemd_user Benutzer für den systemd-Dienst backup
borg_systemd_group Gruppe für den systemd-Dienst backup
borg_systemd_on_failure Wenn gesetzt, wird ein [OnFailure]-Eintrag in der Dienstdatei erstellt -
systemd_script_mode Modus der Skriptdatei 0774
systemd_service_mode Modus der Dienstdatei 0644

Das bereitgestellte Skript definiert auch die Optionen für prune, wie in borg prune beschrieben. Werte, die eine Zahl erwarten, aber deren Variable nicht definiert ist, werden nicht angegeben.

Parameter Beschreibung Standardwert
backup_prune_dryrun -n, --dry-run keine Änderungen am Repository vornehmen false
backup_prune_force --force gezwungenes Prunen von beschädigten Archiven false
backup_prune_stats -s, --stats Statistiken für das gelöschte Archiv ausgeben true
backup_prune_list --list ausführliche Liste der Archive, die beibehalten/gelöscht werden true
backup_prune_keep_within --keep-within INTERVAL alle Archive innerhalb dieses Zeitintervalls behalten -
backup_prune_keep_last --keep-last, --keep-secondly Anzahl der zweitlich zu behaltenden Archive -
backup_prune_keep_minutely --keep-minutely Anzahl der minütlich zu behaltenden Archive -
backup_prune_keep_hourly -H, --keep-hourly Anzahl der stündlich zu behaltenden Archive -
backup_prune_keep_daily -d, --keep-daily Anzahl der täglich zu behaltenden Archive -
backup_prune_keep_weekly -w, --keep-weekly Anzahl der wöchentlich zu behaltenden Archive -
backup_prune_keep_monthly -m, --keep-monthly Anzahl der monatlich zu behaltenden Archive -
backup_prune_keep_yearly -y, --keep-yearly Anzahl der jährlich zu behaltenden Archive -
backup_prune_save_space --save-space langsamer arbeiten, aber weniger Speicherplatz verwenden false

Um sensible Informationen verborgen zu halten, empfehle ich die Verwendung von ansible-vault.

Sie können die Passwortdatei in ansible.cfg definieren, sodass keine Vault-Parameter angegeben werden müssen. Das verschlüsselte Variable backup_encryption_key kann wie folgt erstellt werden:

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

Abhängigkeiten

Keine

Beispiele

Beispiel-Playbook für Remote-Backup

Hier ein Beispiel, wie Sie Ihre Rolle verwenden können (zum Beispiel mit variablen Parameterübergaben):

- 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

Dies wird ein Backup unter ssh://[email protected]:/var/backup/mybackupname erstellen und die folgenden systemd-Dateien:

  • /opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh (Backup-Skript)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.service (systemd-Dienstdatei)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer (systemd-Timerdatei)

Beispiel-Playbook für lokales Backup

Hier ein Beispiel, wie Sie Ihre Rolle verwenden können (zum Beispiel mit variablen Parameterübergaben):

- 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

Dies wird ein Backup unter /var/backup/mybackupname erstellen und die folgenden systemd-Dateien:

  • /opt/borg_backups/automatic-backup-mybackupname-local.sh (Backup-Skript)
  • /etc/systemd/system/automatic-backup-mybackupname-local.service (systemd-Dienstdatei)
  • /etc/systemd/system/automatic-backup-mybackupname-local.timer (systemd-Timerdatei)

Lizenz

Dies ist freie Software, die unter den Bedingungen der Apache v2 Lizenz veröffentlicht wird.

Autor

Geschrieben von Papanito - Gitlab / Github

Über das Projekt

Ansible role do install and setup regular backups with borg

Installieren
ansible-galaxy install papanito.borg
GitHub Repository
Lizenz
apache-2.0
Downloads
187
Besitzer
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.