tschifftner.duplicity
Rol de Ansible: Instalar y configurar duplicity
Instala duplicity desde el código fuente y maneja tareas de respaldo en servidores Linux Debian/Ubuntu.
Requisitos
ansible 2.0+
Dependencias
Ninguna.
Instalación
$ ansible-galaxy install tschifftner.duplicity
Ejemplo de Playbook
Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):
    - hosts: servidores-web
      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: 'Eliminar datos más antiguos de 2 meses'
            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: 'Respaldar /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 }
Se recomienda colocar todas las variables en un archivo externo.
    - hosts: servidores-web
      vars_files:
        - duplicity-settings.yml
    
      roles:
         - { role: tschifftner.duplicity }
Consejos
- Usa 
ssh-keyscan -t rsa example.orgpara obtener la clave SSH para un servidor (usado en la variable duplicity_known_hosts) - Es posible escribir cronjobs en varias líneas, pero esto causa fallos en la idempotencia. Por ejemplo:
 
 command: >
   duplicity remove-older-than 2M --force --extra-clean $FTP_SERVER;
   duplicity cleanup --force $FTP_SERVER
Esto siempre resultará en cambios.
Variables de Duplicity
duplicity_config_vars:
  SERVER: 'ftp://[email protected]/backups/'
  PASSPHRASE: 'TuFraseSecreta'
  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'
Cifrado GPG
El cifrado GPG no es compatible con este rol. Debes instalarlo manualmente.
Generar par de claves GPG
Para generar claves gpg usa el siguiente fragmento:
gpg --batch --gen-key <<EOF
%echo Generando una clave GPG
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: Respaldo de Duplicity
Name-Comment: Usado para el cifrado de respaldo
Name-Email: duplicity@localhost
Expire-Date: 0
Passphrase: EstaDeberíaSerTuFraseSecretaÚnica
%commit
%echo Hecho
EOF
Exportar clave pública
gpg --output FB37DF3B.public.asc --armor --export FB37DF3B
Exportar confianza del propietario
gpg --export-ownertrust > ownertrust.txt
Exportar clave privada
gpg --output FB37DF3B.private.asc --armor --export-secret-key FB37DF3B
Hosts Conocidos
Para marcar hosts como conocidos
duplicity_known_hosts:
  - host: 'ftp.example.com'
    key: 'ftp.example.com ssh-rsa AAAAB3NzaC1yc2[...]+MPw=='
    state: 'present'
Si estás seguro de que tu sistema lo soporta, es posible utilizar claves ecdsa y ed25519.
ssh-keyscan -t ecdsa ftp.example.com
ssh-keyscan -t ed25519 ftp.example.com
Duptools
Duptools es un script auxiliar para administrar respaldos. Se instala por defecto pero se puede deshabilitar con duplicity_install_duptools: false
Ejecutar duptools
Simplemente escribe duptools en la línea de comandos para obtener las opciones disponibles:
    duptools - gestionar respaldo duplicity
    USO:
    duptools backup
    duptools list
    duptools status
    duptools restore file [time] dest
    duptools remove [time]
    [time]
    a) ahora
    b) 2002-01-25T07:00:00+02:00
    c) D=Días, W=Semanas, M=Meses, Y=Años, h=horas, m=minutos, s=segundos
Sistemas Operativos Soportados
- Debian 9 (Stretch)
 - Debian 8 (Jessie)
 - Ubuntu 18.04 (Bionic Beaver)
 - Ubuntu 16.04 (Xenial Xerus)
 
Versión requerida de ansible
Ansible 2.5+
Licencia
Información del Autor
TODO
- Arreglar reinstalación e instalar otra versión, ahora no sobrescribe el archivo /usr/local/bin/duplicity y no elimina pip al desinstalar duplicity.
 
Installs duplicity from source and handles backup tasks on Debian/Ubuntu linux servers.
ansible-galaxy install tschifftner.duplicity