papanito.borg

Rola Ansible "papanito.borg"

Rola Ansible Ocena jakości Ansible Rola Ansible Błędy GitHub Wnioski GitHub

Rola Ansible do instalacji i konfiguracji regularnych kopii zapasowych za pomocą borg. Rola wykonuje następujące czynności:

  • [Opcjonalnie] Usuwa istniejące repozytorium

  • Inicjalizuje repozytorium w protocol://backup_server:target_dir lub target_dir

    Uwaga

    Jeśli repozytorium target_dir już istnieje, inicjalizacja zostanie pominięta Jeśli backup_server nie jest określony, rola zakłada lokalną kopię zapasową, tj. w lokalnym katalogu

  • Tworzy usługę systemd, która regularnie (zgodnie z backup_schedule) uruchamia skrypt borg.sh z borgbackup.org

  • W /opt/borg_backup powstanie oddzielny skrypt borg o nazwie automatic-backup-{{service_name}}.sh, który jest dostosowany do:

    • backup_source_dir
    • backup_exclude_file lub backup_exclude_list
    • backup_schedule

Wymagania

Brak

Zmienne roli

Oto wszystkie zmienne:

Parametr Opis Domyślna wartość
backup_server Nazwa serwera kopii zapasowej - jeśli nie jest zdefiniowana, zakłada lokalną kopię zapasową -
backup_user Nazwa użytkownika do połączenia z serwerem -
backup_port Port do połączenia z backup_server -
protocol Protokół używany do połączenia z backup_server ssh
backup_name [obowiązkowy] Nazwa kopii zapasowej
backup_encryption_key [obowiązkowy] Hasło dla klucza szyfrowania używając repokey -
backup_encryption_method Metoda szyfrowania Borg, obecnie wdrożona tylko repokey repokey
target_dir Docelowy katalog kopii zapasowych na backup_server "./backups/{{ backup_name }}"
backup_delete OSTRZEŻENIE Jeśli ustawione na true, istniejące repozytorium kopii zapasowej zostanie usunięte false
backup_create Tworzenie repozytorium. Możesz użyć roli do explicznego usunięcia istniejącego repository uruchamiając rolę z -e backup_delete=true -e backup_create=false true
backup_schedule Notacja harmonogramu systemd dla codziennej kopii zapasowej *-*-* 03:00:00
backup_include_list Lista katalogów źródłowych do backupu -
backup_exclude_file EXCLUDEFILE zawierający wzorce wykluczeń
Ma pierwszeństwo przed backup_exclude_list
-
backup_exclude_list Lista wzorców, które zostaną dodane jako --exclude 'PATTERN' -

Poniższe parametry dotyczą pliku usługi systemd:

Parametr Opis Domyślna wartość
systemd_target_dir Miejsce, w którym można skopiować pliki .service /etc/systemd/system/
borg_systemd_user Użytkownik dla usługi systemd backup
borg_systemd_group Grupa dla usługi systemd backup
borg_systemd_on_failure Jeśli ustawione, doda wpis [OnFailure] w pliku usługi -
systemd_script_mode Tryb pliku skryptu 0774
systemd_service_mode Tryb pliku usługi 0644

Skrypt, który jest wdrażany, również definiuje opcje dla prune, jak opisano w borg prune. Wartości, które oczekują liczby, ale zmienna nie jest zdefiniowana, nie zostaną dołączone.

Parametr Opis Domyślna wartość
backup_prune_dryrun -n, --dry-run nie zmienia repozytorium false
backup_prune_force --force wymusza usunięcie uszkodzonych archiwów false
backup_prune_stats -s, --stats wyświetla statystyki dla usuniętego archiwum true
backup_prune_list --list wyświetla szczegółową listę archiwów, które są zachowywane/usuwane true
backup_prune_keep_within --keep-within INTERVAL zachowuje wszystkie archiwa w tym przedziale czasowym -
backup_prune_keep_last --keep-last, --keep-secondly liczba archiwów, które mają być zachowane -
backup_prune_keep_minutely --keep-minutely liczba archiwów, które mają być zachowane -
backup_prune_keep_hourly -H, --keep-hourly liczba archiwów, które mają być zachowane -
backup_prune_keep_daily -d, --keep-daily liczba archiwów, które mają być zachowane -
backup_prune_keep_weekly -w, --keep-weekly liczba archiwów, które mają być zachowane -
backup_prune_keep_monthly -m, --keep-monthly liczba archiwów, które mają być zachowane -
backup_prune_keep_yearly -y, --keep-yearly liczba archiwów, które mają być zachowane -
backup_prune_save_space --save-space działa wolniej, ale zajmuje mniej miejsca false

Aby ukryć dane wrażliwe, zaleca się użycie ansible-vault.

Możesz zdefiniować plik hasła w ansible.cfg, aby nie musieć określać żadnego parametru vault. Zapisany zmienna backup_encryption_key może być stworzona w następujący sposób:

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

Zależności

Brak

Przykłady

Przykład playbooka zdalnej kopii zapasowej

Zawiera przykład użycia swojej roli (np. z przekazanymi zmiennymi jako parametry):

- 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

To utworzy kopię zapasową w ssh://[email protected]:/var/backup/mybackupname oraz następujące pliki systemd:

  • /opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh (skrypt kopii zapasowej)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.service (plik usługi systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer (plik czasomierzy systemd)

Przykład playbooka lokalnej kopii zapasowej

Zawiera przykład użycia swojej roli (np. z przekazanymi zmiennymi jako parametry):

- hosts: localhost
  vars:
  - backup_name: mybackupname
  - backup_encryption_key: test
  - 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

To utworzy kopię zapasową w /var/backup/mybackupname oraz następujące pliki systemd:

  • /opt/borg_backups/automatic-backup-mybackupname-local.sh (skrypt kopii zapasowej)
  • /etc/systemd/system/automatic-backup-mybackupname-local.service (plik usługi systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-local.timer (plik czasomierzy systemd)

Licencja

To jest Oprogramowanie Otwarta, wydane na warunkach licencji Apache v2.

Informacje o autorze

Napisane przez Papanito - Gitlab / Github

O projekcie

Ansible role do install and setup regular backups with borg

Zainstaluj
ansible-galaxy install papanito.borg
Licencja
apache-2.0
Pobrania
187
Właściciel
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.