alphanodes.backup
Rola Ansible: Backup
Wykonuj codzienne, tygodniowe i miesięczne kopie zapasowe plików, baz danych MySQL i PostgreSQL na serwerach Debian i Ubuntu.
Rotacja kopii zapasowych jest konfigurowalna, np. można użyć schematu Dziadek-ojciec-syn
Zależności
brak
Instalacja
Ansible 2+
Użyj narzędzia ansible galaxy CLI:
ansible-galaxy install alphanodes.backup
Zmienne Roli
Dostępne zmienne są wymienione poniżej, wraz z domyślnymi wartościami (zobacz defaults/main.yml
):
backup_dir: /srv/backups
Katalog dla kopii zapasowych. Upewnij się, że jest wystarczająco dużo miejsca na tym dysku. Użyj cudzysłowów, aby uniknąć problemów z konwersją (np. z to_nice_yaml)
backup_dir_mode: '0755'
Uprawnienia katalogu dla backup_dir
backup_dir_owner: root
Właściciel katalogu dla backup_dir
backup_dir_group: root
Grupa katalogu dla backup_dir
backup_max_days: 7
Liczba dni dla codziennych zestawów kopii zapasowych. Oznacza to, że przechowywane są tylko zestawy z ostatnich backup_max_days
dni. Starsze zestawy są automatycznie usuwane. Wartość musi być => 1.
backup_max_weeks: 1
Liczba tygodni dla tygodniowych zestawów kopii zapasowych. Oznacza to, że przechowywane są tylko zestawy z ostatnich backup_max_weeks
tygodni. Starsze zestawy są automatycznie usuwane. Wartość musi być => 1. Tygodniowa kopia jest tworzona w każdy pierwszy dzień tygodnia. Tego dnia tworzona jest tylko ta kopia (a nie dzienna kopia - ponieważ byłoby to duplikat).
backup_max_months: 1
Liczba miesięcy dla miesięcznych zestawów kopii zapasowych. Oznacza to, że przechowywane są tylko zestawy z ostatnich backup_max_months
miesięcy. Starsze zestawy są automatycznie usuwane. Wartość musi być => 1. Miesięczna kopia jest tworzona w każdy pierwszy dzień miesiąca. Tego dnia tworzona jest tylko ta kopia (a nie dzienna ani tygodniowa kopia - ponieważ byłoby to duplikat).
backup_remote_host: ''
Nazwa hosta do synchronizacji kopii zapasowych przy użyciu backup_remote_transfer
.
backup_remote_port: ''
Port do synchronizacji kopii zapasowych przy użyciu backup_remote_transfer
.
backup_remote_dir: ''
Zdalny katalog dla backup_remote_host
przy użyciu backup_remote_transfer
.
backup_remote_excludes:
- '*.journal'
- '.nfs*'
- '*.tar'
Te pliki są wykluczone z synchronizacji na zdalny host. To jest używane tylko jeśli backup_remote_transfer
to rsync
.
backup_rsync_options: '-avz --delete'
Opcje rsync dla backup_remote_transfer
z użyciem rsync
.
backup_remote_transfer: rsync
Typ synchronizacji. Możliwe wartości to: rsync lub lftp.
backup_remote_user: ''
Użytkownik do synchronizacji zdalnej. Jest to używane tylko wtedy, gdy backup_remote_transfer
to lftp.
backup_remote_password: ''
Hasło do synchronizacji zdalnej. Jest to używane tylko wtedy, gdy backup_remote_transfer
to lftp.
backup_with_borg: ''
Jeśli backupborg powinien być uruchomiony.
backup_db_dump_format: .sql.gz
Niekompresowane pliki SQL (.sql) oraz bzip2 (.bz2), gzip (.gz) i xz. W tej chwili jest używane tylko dla zrzutów mysql.
backup_with_mysql: false
Uruchom zrzut kopii zapasowej MySQL (MariaDB). Wszystkie bazy danych są przechowywane w osobnych plikach.
backup_with_postgresql: false
Uruchom zrzut kopii zapasowej PostgreSQL. Wszystkie bazy danych są przechowywane w osobnych plikach.
backup_with_mongodb: false
Uruchom zrzut kopii zapasowej MongoDB. Wszystkie bazy danych są przechowywane w jednym archiwum.
backup_mongodb_options: '--archive --gzip'
Opcje dla zrzutu mongodb.
backup_mysql_db_excludes:
- performance_schema
- information_schema
- sys
backup_mysql_single_transaction: true
# backup_mysqldump_options: '--extended-insert=true --opt --single-transaction'
Dostosowane opcje mysql (zawsze używany jest sql.gz). Jeśli ustawione to używane jest natywne mysql_dump (bez ansible). Domyślnie nie jest to ustawione.
backup_postgresqldump_options: "--no-owner -Fc"
Opcje zrzutu PostgreSQL.
backup_create_hashfiles: false
Twórz pliki hash dla wszystkich zestawów kopii zapasowych.
backup_files_unsafe_writes: false
Jeśli backup_files_unsafe_writes
jest ustawione na tak i zmienione pliki zostaną znalezione podczas tworzenia plików tar, nie będą zgłaszane żadne błędy. Tar działa z dodatkowymi opcjami --warning=no-file-removed --warning=no-file-changed --warning=no-file-ignored
.
Ta opcja może być nadpisywana dla każdego zestawu z unsafe_writes
.
backup_sets: []
Zestawy kopii zapasowych dla kopii plików. name
jest używane jako nazwa pliku kopii zapasowej. src
to katalog pliku, który ma być zarchiwizowany. unsafe_writes
nadpisuje backup_files_unsafe_writes
. excludes
to lista, która może być używana do wykluczania plików lub katalogów.
backup_one_per_day_limit: true
Utwórz tylko jeden zestaw kopii zapasowej dziennie. Istniejące zestawy kopii zapasowej z tego samego dnia zostaną usunięte.
#sync_master: anything
Jeśli sync_master
jest zdefiniowane, kopia zapasowa zostanie pominięta. Możesz użyć tego w środowiskach replikacji.
backup_skip_sync_clients: true
Jeśli sync_master
jest zdefiniowane, oznacza to, że jest to klient synchronizacji.
backup_pre_commands: []
Lista poleceń, które powinny być uruchomione przed zrzutem kopii zapasowej.
backup_post_commands: []
Lista poleceń, które są uruchamiane po utworzeniu zrzutu kopii zapasowej.
Przykładowy Playbook
- hosts: server-name
vars:
backup_sets:
- name: etc
src: /etc
roles:
- alphanodes.backup
Rozszerzony przykład Playbook
- hosts: server-name
vars:
backup_max_days: 14
backup_max_weeks: 4
backup_max_months: 6
backup_with_postgresql: true
backup_dir_mode: '0770'
backup_dir_group: postgres
backup_sets:
- name: etc
src: /etc
- name: jenkins
src: /var/lib/jenkins
unsafe_writes: true
excludes:
- builds
- workspace
roles:
- alphanodes.backup
Licencja
Licencja GPL Wersja 3
Informacje o autorze
Ta rola została stworzona w 2018 roku przez AlphaNodes.
Run daily backups for files, MySQL databases and PostgreSQL databases
ansible-galaxy install alphanodes.backup