borgbase.ansible_role_borgbackup
Rola Ansible: Klient BorgBackup
Ustaw zaszyfrowane, skompresowane i deduplikowane kopie zapasowe za pomocą BorgBackup i Borgmatic. Obecnie wspiera Debian/Ubuntu, CentOS/Red Hat/Fedora, Archlinux i Manjaro.
Działa świetnie z BorgBase.com - prostym i bezpiecznym hostingiem dla Twoich repozytoriów Borg. Aby zarządzać repozytoriami BorgBase za pomocą Ansible, zobacz również kolekcję BorgBase Collection Andy'ego Hawkinsa.
Główne funkcje
- Instalacja Borg i Borgmatic z PyPi lub pakietów dystrybucji
- Ustawienie konfiguracji Borgmatic
- Planowanie regularnych kopii zapasowych za pomocą Cron lub timera Systemd
Zmiany
- Starsze wersje tej roli ustawiały oddzielne zadanie Cron do tworzenia i sprawdzania kopii zapasowych. W najnowszej wersji Borgmatic ta funkcjonalność jest zarządzana przez Borgmatic. W rezultacie dodatkowe zadanie Cron zostanie usunięte przez tę rolę.
- Starsze wersje tej roli wspierały tylko Cron do planowania. Jeśli używasz timerów Systemd, upewnij się, że najpierw usuniesz zadanie Cron w
/etc/cron.d/borgmatic
. Rola również powiadomi cię o próbie użycia obu timerów.
Przykładowy playbook z użytkownikiem root i timerem Cron
- hosts: all
roles:
- role: borgbase.ansible_role_borgbackup
borg_encryption_passphrase: ZMIEN TO
borg_repository:
- ssh://[email protected]/./repo
borg_source_directories:
- /var/www
borgmatic_hooks:
before_backup:
- echo "`date` - Rozpoczęcie kopii zapasowej."
postgresql_databases:
- name: users
hostname: database1.example.org
port: 5433
Przykładowy playbook z użytkownikiem service i timerem Systemd
- hosts: all
roles:
- role: borgbase.ansible_role_borgbackup
borg_encryption_passphrase: ZMIEN TO
borg_repository: ssh://[email protected]/./repo
borgmatic_timer: systemd
borg_user: "backupuser"
borg_group: "backupuser"
borg_source_directories:
- /var/www
borg_retention_policy:
keep_hourly: 3
keep_daily: 7
keep_weekly: 4
keep_monthly: 6
Instalacja
Pobierz z Ansible Galaxy
$ ansible-galaxy install borgbase.ansible_role_borgbackup
Sklonuj najnowszą wersję z Github
$ git clone https://github.com/borgbase/ansible-role-borgbackup.git roles/ansible_role_borgbackup
Zmienne Roli
Wymagane zmienne
borg_repository
: Pełna ścieżka do repozytorium. Twoj własny serwer lub repozytorium BorgBase.com. Może być listą, jeśli chcesz tworzyć kopie zapasowe do wielu repozytoriów.
Opcjonalne zmienne
borg_dep_packages
: Pakiety zależności do zainstalowaniaborg(backup)
iborgmatic
.borg_distro_packages
: zawiera nazwy pakietów dystrybucji dlaborg(backup)
iborgmatic
, używane tylko jeśliborg_install_method
jest ustawione napackage
.borg_encryption_passcommand
: Standardowe wyjście tej komendy jest używane do odblokowania klucza szyfrowania.borg_encryption_passphrase
: Hasło do użycia dla repokey lub keyfile. Puste, jeśli repozytorium jest nieszyfrowane.borg_exclude_from
: Odczytuje wzory wykluczeń z jednego lub więcej oddzielnych nazwanych plików, po jednym wzorze na linię.borg_exclude_patterns
: Ścieżki lub wzory do wykluczenia z kopii zapasowej. Zobacz oficjalną dokumentację po więcej informacji.borg_install_method
: Domyślnie używany jestpip
do instalacji borgmatic. Aby zainstalować za pomocą menedżera pakietów dystrybucji, ustaw to napackage
i (jeśli to konieczne) nadpisz zmiennąborg_distro_packages
, aby zawierała nazwy pakietów dystrybucji wymaganych do instalacji borgmatic. Zauważ, że wiele dystrybucji dostarcza przestarzałe wersje borgbackup i borgmatic; używaj na własne ryzyko.borg_require_epel
: Przy używaniuborg_install_method: package
na dystrybucjach opartych na RHEL, repozytorium EPEL jest wymagane. Aby wyłączyć sprawdzanie (np. używając niestandardowego lustra zamiast pakietuepel-release
), ustaw to nafalse
. Domyślnie jest to{{ ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora' }}
(czylitrue
w dystrybucjach opartych na Enterprise Linux).borg_lock_wait_time
: Limity maksymalnej liczby sekund oczekiwania na uzyskanie blokady repozytorium/cache. Domyślnie 5 sekund.borg_one_file_system
: Nie przekraczaj granic systemu plików. Domyślnietrue
.borg_pip_packages
: Pakiety zależności (pip) do zainstalowaniaborg(backup)
iborgmatic
.borg_remote_path
: Ścieżka do wykonalnego pliku borg na zdalnym serwerze. Domyślnie będzie toborg
.borg_remote_rate_limit
: Ograniczenie prędkości przesyłania do zdalnego serwera w kiB/s.borg_retention_policy
: Polityka przechowywania określająca, ile kopii zapasowych zachować w każdej kategorii (dziennych, tygodniowych, miesięcznych itd.).borg_source_directories
: Lista lokalnych folderów do utworzenia kopii zapasowej. Domyślnie to/etc/hostname
, aby zapobiec pustej kopii zapasowej.borg_ssh_key_name
: Nazwa klucza publicznego i prywatnego SSH. Domyślnieid_ed25519
.borg_ssh_key_file_path
: Klucz SSH, który będzie używany. Domyślnie~/.ssh/{{ borg_ssh_key_name }}
.borg_ssh_key_type
: Algorytm użyty do wygenerowania prywatnego klucza SSH. Wybierz:rsa
,dsa
,rsa1
,ecdsa
,ed25519
. Domyślnie:ed25519
.borg_ssh_command
: Komenda używana zamiast "ssh". Można użyć do określenia opcji SSH.borg_version
: Wymuszenie określonej wersji borg do zainstalowania.borg_venv_path
: Ścieżka do przechowywania wirtualnego środowiska dlaborg(backup)
iborgmatic
.borgmatic_check_last
: Liczba archiwów do sprawdzenia. Domyślnie3
.borgmatic_checks
: Lista kontroli spójności. Domyślnie kontrole miesięczne. Zobacz dokumentację dla wszystkich opcji.borgmatic_config_name
: Nazwa do użycia dla pliku konfiguracyjnego Borgmatic. Domyślnieconfig.yaml
.borgmatic_timer_hour
: Godzina, w której regularne zadanie tworzenia i usuwania w cron/timerze systemd będzie się wykonywać. Domyślnie{{ 6 | random }}
.borgmatic_timer_minute
: Minuta, w której regularne zadanie tworzenia i usuwania w cron/timerze systemd będzie się wykonywać. Domyślnie{{ 59 | random }}
.borgmatic_hooks
: Hooki do monitorowania kopii zapasowych, np. za pomocą Healthchecks. Zobacz oficjalną dokumentację po więcej.borgmatic_timer
: Jeśli zmienna jest ustawiona, timer jest instalowany. Należy wybrać międzycron
asystemd
.borgmatic_relocated_repo_access_is_ok
: Ominięcie błędu Borg dotyczącego repozytorium, które zostało przeniesione. Domyślniefalse
.borgmatic_store_atime
: Przechowywanie atime w archiwum. Domyślnietrue
.borgmatic_store_ctime
: Przechowywanie ctime w archiwum. Domyślnietrue
.borgmatic_version
: Wymuszenie określonej wersji borgmatic do zainstalowania.borg_user
: Nazwa użytkownika do tworzenia kopii zapasowych (konto usługi).borg_group
: Nazwa grupy do tworzenia kopii zapasowych (konto usługi).
Współpraca
Zgłoszenia zmian (PR) są mile widziane, o ile dodają funkcje istotne dla znaczącej liczby użytkowników. Wszystkie PR są testowane pod kątem stylu i funkcjonalności. Aby uruchomić testy lokalnie (potrzebuje Dockera):
$ pip install -r requirements-dev.txt
$ molecule test
Licencja
MIT/BSD
Autor
© 2018-2023 Manuel Riel i współpracownicy.
Set up backup to remote machine using Borg and Borgmatic.
ansible-galaxy install borgbase.ansible_role_borgbackup