fiaasco.borgbackup

Rol de respaldo Borg

Debian Ubuntu Rocky Múltiples

Este rol instala Borg backup en servidores y clientes de borgbackup. El rol contiene un script envoltorio 'borg-backup' para facilitar su uso en el cliente. Las opciones soportadas incluyen borg-backup info | init | list | backup | mount. Automysqlbackup se ejecutará como comando previo al respaldo si está instalado. El rol admite tanto almacenamiento de respaldo autoalojado como externo, como rsync.net y hetzner storage box como servidor Borg.

Es posible configurar repositorios solo de anexado para asegurar los respaldos contra su eliminación desde el cliente.

Se requiere Ansible 2.9 o superior para ejecutar este rol.

Variables requeridas

Define un grupo borgbackup_servers en tu inventario con uno o varios hosts. El grupo borgbackup_management solo es necesario si deseas habilitar el modo de solo anexado y limpiar los respaldos desde un host asegurado.

[borgbackup_servers]
backup1.fiaas.co

[borgbackup_management]
supersecurehost

Define variables de grupo o de host para tus extremos de respaldo y su retención:

borgbackup_servers:
  - id: fiaas
    fqdn: backup1.fiaas.co
    user: borgbackup
    type: normal
    home: /backup/
    pool: repos
    options: ""
  - id: rsync
    fqdn: yourhost.rsync.net
    user: userid
    type: rsync.net
    home: ""
    pool: repos
    options: "--remote-path=borg1"
  - id: hetzner
    fqdn: username.your-storagebox.de
    user: username
    type: hetzner
    home: ""
    pool: repos
    options: ""

borgbackup_retention:
  hourly: 12
  daily: 7
  weekly: 4
  monthly: 6
  yearly: 1

ADVERTENCIA: la barra diagonal final en item.home es requerida.

Define un borg_passphrase para cada host. host_vars\client1:

borgbackup_passphrase: Ahl9EiNohr5koosh1Wohs3Shoo3ooZ6p

Por defecto, el rol crea un cronjob en /etc/cron.d/borg-backup que se ejecuta como root todos los días a una hora aleatoria entre las 0 y las 5 am en un minuto aleatorio. Sobrescribe los valores por defecto si es necesario:

borgbackup_client_user: root
borgbackup_cron_day: "*"
borgbackup_cron_minute: "{{ 59|random }}"
borgbackup_cron_hour: "{{ 5|random }}"

Sobrescribe borgbackup_client_user donde sea necesario, por ejemplo, si tienes un laptop con un directorio de inicio cifrado, deberás ejecutar el respaldo como el usuario de ese directorio.

Establece borgbackup_appendonly: True en variables de host o grupo si deseas repositorios solo de anexado. En ese caso, es posible definir un nombre de host en borgbackup_management_station donde se configurará un script de poda de borg. Solo la estación de gestión tendrá permiso para podar respaldos antiguos para (todos) los clientes. Esto generará un acceso SSH con opciones --append-only. Si estableces borgbackup_appendonly_repoconfig en True, también deshabilitará la posibilidad de eliminar respaldos desde la estación de gestión. (O al menos: no es posible eliminarlos hasta que reconfigures el repositorio y esto no está soportado actualmente en el script de poda) Ten en cuenta las limitaciones del modo solo de anexado: los respaldos podados parecen ser eliminados, pero solo se eliminan en el registro de transacciones hasta que algo escribe en modo normal en el repositorio)

Asegúrate de revisar los valores por defecto configurados para este rol, que contiene la lista de ubicaciones por defecto que se respaldan en backup_include. Sobrescribe esto en tu inventario donde sea necesario.

Instalando Borg desde un paquete

Borg se puede instalar desde un paquete configurando la variable:

borgbackup_install_from_pkg: true

En sistemas EPEL (RedHat/CentOS), el repositorio epel-release se añadirá automáticamente utilizando el rol geerlingguy.repo-epel.

Uso

Configura Borg en el servidor y en un cliente:

ansible-playbook -i inventory/test backup.yml -l backup1.fiaas.co
ansible-playbook -i inventory/test backup.yml -l client1.fiaas.co

Pruebas

Toda la funcionalidad del rol se prueba utilizando molecule con una conexión local a docker para evitar complejidades. Para más información sobre las pruebas con molecule, consulta https://molecule.readthedocs.io/en/latest/. Las pruebas se escriben usando Testinfra, consulta https://testinfra.readthedocs.io/en/latest/.

Debido a la variedad de escenarios, las pruebas mismas se almacenan en molecule/generic_files para optimizar la reutilización. Se pueden aplicar a hosts/grupos utilizando grupos.

Comenzar con las pruebas es tan fácil como hacer lo siguiente en cualquier máquina con un motor docker local en funcionamiento: (desde el directorio raíz de este rol)

$ virtualenv -p python3 ~/.venv/fiaasco-borgbackup-docu
$ source ~/.venv/fiaasco-borgbackup-docu/bin/activate
$ pip3 install -r requirements.txt
$ molecule test

Asegúrate de probar toda la funcionalidad. ¡Las construcciones que fallen no serán aceptadas en la revisión del PR! Cada escenario de prueba ejecuta al menos un despliegue completo con un servidor de respaldo, realiza un respaldo, ejecuta una prueba de restauración y varias otras pruebas menores, asegurando la estabilidad funcional.

Escenarios de prueba

por defecto

molecule test

Este escenario prueba la funcionalidad más común en plataformas Debian. Ejecuta un servidor de respaldo en las 2 últimas versiones oficiales de Debian.

centos

molecule test -s centos

Este escenario prueba la funcionalidad más común en plataformas EPEL. Ejecuta un servidor de respaldo en las 2 últimas versiones oficiales de CentOS.

ubuntu

molecule test -s ubuntu

Este escenario prueba la funcionalidad más común en plataformas Ubuntu. Ejecuta un servidor de respaldo en las 2 últimas versiones oficiales de Ubuntu.

múltiples

molecule test -s multiple

Este escenario asegura que la funcionalidad del rol funcione cuando se definen 2 o más servidores de respaldo.

lamp

molecule test -s lamp

Prueba la funcionalidad cuando se aplica el rol fiaas.lamp a una máquina, asegurando la compatibilidad con un host 'Fiaas'. Consulta molecule.yml para más detalles.

clientes

molecule test -s clients

Esta prueba es el escenario más grande ya que contiene pruebas para todas las plataformas y combinaciones soportadas. Por ejemplo, Debian 8 + 9 + 10, Fedora 31, ... Dado que todos usamos diferentes sistemas y plataformas, ¡esto puede ampliarse fácilmente siempre que este escenario siga funcionando!

Lectura adicional

Acerca del proyecto

Install Borg backup server and client (with rsync.net server support)

Instalar
ansible-galaxy install fiaasco.borgbackup
Licencia
mit
Descargas
12.9k
Propietario
Full install as a service