tschifftner.duplicity
Rola Ansible: Instalacja i konfiguracja duplicity
Instaluje duplicity ze źródła i obsługuje zadania tworzenia kopii zapasowych na serwerach Linux Debian/Ubuntu.
Wymagania
Ansible 2.0+
Zależności
Brak.
Instalacja
$ ansible-galaxy install tschifftner.duplicity
Przykładowy playbook
Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (sprawdź defaults/main.yml
):
- hosts: serwery_www
vars:
# duplicity
duplicity_known_hosts:
- host: 'example.org'
key: 'example.org ssh-rsa AAAAB3NzaC...+PwAK+MPw=='
state: present
duplicity_config_vars:
FTP_SERVER: 'sftp://[email protected]/my/folder/'
FTP_PASSWORD: '*******'
DEFAULT_PARAMS: '--verbosity info --exclude-device-files --exclude-other-filesystems --exclude-if-present .duplicity-ignore'
duplicity_cronjobs:
- name: 'Usuwanie starszych niż 2 miesiące'
user: root
group: root
source: /etc/duplicity/duplicity.conf
hour: 4
minute: 10
command: >
duplicity remove-older-than 2M --force --extra-clean $FTP_SERVER;
duplicity cleanup --force $FTP_SERVER
- name: 'Backup /var/www'
user: root
group: root
hour: 5
minute: 21
source: /etc/duplicity/duplicity.conf
command: duplicity $DEFAULT_PARAMS --include /var/www --full-if-older-than 1M --exclude '**' / $FTP_SERVER
roles:
- { role: tschifftner.duplicity }
Zaleca się umieszczenie wszystkich zmiennych w zewnętrznym pliku.
- hosts: serwery_www
vars_files:
- duplicity-settings.yml
roles:
- { role: tschifftner.duplicity }
Wskazówki
- Użyj
ssh-keyscan -t rsa example.org
, aby uzyskać klucz ssh dla serwera (używanego w zmiennej duplicity_known_hosts) - Możliwe jest pisanie cronjobów w kilku linijkach. Jednak to powoduje problemy z idempotencją! Na przykład:
command: >
duplicity remove-older-than 2M --force --extra-clean $FTP_SERVER;
duplicity cleanup --force $FTP_SERVER
To zawsze wyniknie w zmianie!
Zmienne duplicity
duplicity_config_vars:
SERVER: 'ftp://[email protected]/backups/'
PASSPHRASE: 'TwojeTajneHasło'
FTP_PASSWORD: '*******'
PARAMS: '--verbosity info --exclude-device-files --exclude-other-filesystems --exclude-if-present .duplicity-ignore --exclude-filelist /etc/duplicity/exclude.list'
INCLUDES: '/root /home /var/www /var/backup'
Szyfrowanie GPG
Szyfrowanie GPG nie jest obsługiwane przez tę rolę. Musisz je zainstalować ręcznie.
Generowanie pary kluczy GPG
Aby wygenerować klucze gpg, użyj następującego fragmentu:
gpg --batch --gen-key <<EOF
%echo Generowanie klucza GPG
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: Duplicity Backup
Name-Comment: Używane do szyfrowania kopii zapasowych
Name-Email: duplicity@localhost
Expire-Date: 0
Passphrase: ToPowinnoByćTwojeOsobisteUnikalneHasło
%commit
%echo Gotowe
EOF
Eksportuj klucz publiczny
gpg --output FB37DF3B.public.asc --armor --export FB37DF3B
Eksportuj zaufanie właściciela
gpg --export-ownertrust > ownertrust.txt
Eksportuj klucz prywatny
gpg --output FB37DF3B.private.asc --armor --export-secret-key FB37DF3B
Znane hosty
Aby oznaczyć hosty jako znane hosty
duplicity_known_hosts:
- host: 'ftp.example.com'
key: 'ftp.example.com ssh-rsa AAAAB3NzaC1yc2[...]+MPw=='
state: 'present'
Jeśli masz pewność, że twój system to obsługuje, można używać kluczy ecdsa i ed25519.
ssh-keyscan -t ecdsa ftp.example.com
ssh-keyscan -t ed25519 ftp.example.com
Duptools
Duptools to skrypt pomocniczy do zarządzania kopiami zapasowymi. Jest instalowany domyślnie, ale można go wyłączyć za pomocą duplicity_install_duptools: false
Uruchom duptools
Wystarczy wpisać duptools
w wierszu poleceń, aby uzyskać dostępne opcje:
duptools - zarządzaj kopią zapasową duplicity
UŻYJKI:
duptools backup
duptools list
duptools status
duptools restore file [czas] dest
duptools remove [czas]
[czas]
a) teraz
b) 2002-01-25T07:00:00+02:00
c) D=Dni, W=Tygodnie, M=Miesiące, Y=Lata, h=godziny, m=minuty, s=sekundy
Obsługiwane systemy operacyjne
- Debian 9 (Stretch)
- Debian 8 (Jessie)
- Ubuntu 18.04 (Bionic Beaver)
- Ubuntu 16.04 (Xenial Xerus)
Wymagana wersja ansible
Ansible 2.5+
Licencja
Informacje o autorze
TODO
- Naprawić reinstalację i instalację innej wersji, obecnie nie nadpisuje pliku /usr/local/bin/duplicity i nie usuwa pip podczas odinstalowywania duplicity.
Installs duplicity from source and handles backup tasks on Debian/Ubuntu linux servers.
ansible-galaxy install tschifftner.duplicity