tschifftner.duplicity

Rola Ansible: Instalacja i konfiguracja duplicity

Status budowy

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

Licencja MIT

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.
O projekcie

Installs duplicity from source and handles backup tasks on Debian/Ubuntu linux servers.

Zainstaluj
ansible-galaxy install tschifftner.duplicity
Licencja
mit
Pobrania
90
Właściciel
Kubernetes Software Architekt, Magento Certified Developer und Full-Stack Entwickler