borgbase.ansible_role_borgbackup

Rol de Ansible: Cliente de BorgBackup

Test Ansible Galaxy

Configura copias de seguridad encriptadas, comprimidas y deduplicadas usando BorgBackup y Borgmatic. Actualmente soporta Debian/Ubuntu, CentOS/Red Hat/Fedora, Archlinux y Manjaro.

Funciona muy bien con BorgBase.com - Alojamiento Simple y Seguro para tus Repositorios Borg. Para gestionar repositorios de BorgBase a través de Ansible, también consulta la Colección de BorgBase de Andy Hawkins.

Características principales

  • Instala Borg y Borgmatic desde PyPi o paquetes de distribución
  • Configura Borgmatic
  • Programa copias de seguridad regulares usando Cron o temporizador de Systemd

Cambios importantes

  • Las versiones más antiguas de este rol configuraban un trabajo Cron separado para crear y verificar copias de seguridad. Con la versión reciente de Borgmatic, esta función ahora se gestiona en Borgmatic. Como resultado, el trabajo Cron adicional será eliminado por este rol.
  • Las versiones anteriores de este rol solo soportaban Cron para la programación. Si usas temporizadores de Systemd, asegúrate de eliminar primero el trabajo Cron en /etc/cron.d/borgmatic. El rol también te avisará al intentar usar ambos temporizadores.

Ejemplo de playbook con root como usuario de backup y temporizador de Cron

- hosts: all
  roles:
  - role: borgbase.ansible_role_borgbackup
    borg_encryption_passphrase: CAMBIAME
    borg_repository:
      - ssh://[email protected]/./repo
    borg_source_directories:
      - /var/www
    borgmatic_hooks:
      before_backup:
      - echo "`date` - Iniciando copia de seguridad."
      postgresql_databases:
      - name: users
        hostname: database1.example.org
        port: 5433

Ejemplo de playbook con usuario de servicio y temporizador de Systemd

- hosts: all
  roles:
  - role: borgbase.ansible_role_borgbackup
    borg_encryption_passphrase: CAMBIAME
    borg_repository: ssh://[email protected]/./repo
    borgmatic_timer: systemd
    borg_user: "backupuser"
    borg_group: "backupuser"
    borg_source_directories:
      - /var/www
    borg_retention_policy:
      keep_hourly: 3
      keep_daily: 7
      keep_weekly: 4
      keep_monthly: 6

Instalación

Descargar desde Ansible Galaxy

$ ansible-galaxy install borgbase.ansible_role_borgbackup

Clonar la última versión desde Github

$ git clone https://github.com/borgbase/ansible-role-borgbackup.git roles/ansible_role_borgbackup

Variables del rol

Variables requeridas

  • borg_repository: Ruta completa al repositorio. Tu propio servidor o repositorio de BorgBase.com. Puede ser una lista si deseas hacer copias de seguridad en múltiples repositorios.

Variables opcionales

  • borg_dep_packages: Paquetes de dependencia para instalar borg(backup) y borgmatic.

  • borg_distro_packages: contiene los nombres de los paquetes de distribución para borg(backup) y borgmatic, solo se usa si borg_install_method está configurado en package.

  • borg_encryption_passcommand: La salida estándar de este comando se utiliza para desbloquear la clave de encriptación.

  • borg_encryption_passphrase: Contraseña para usar con repokey o keyfile. Vacío si el repositorio no está encriptado.

  • borg_exclude_from: Leer patrones de exclusión de uno o más archivos separados, un patrón por línea.

  • borg_exclude_patterns: Rutas o patrones a excluir de la copia de seguridad. Consulta la documentación oficial para más información.

  • borg_install_method: Por defecto se usa pip para instalar borgmatic. Para instalar a través del gestor de paquetes de tu distribución, configúralo en package y (si es necesario) reemplaza la variable borg_distro_packages para contener los nombres de los paquetes requeridos.

  • borg_require_epel: Al usar borg_install_method: package en distribuciones basadas en RHEL, se requiere el repositorio EPEL. Para deshabilitar la verificación (por ejemplo, al usar un espejo personalizado en lugar del paquete epel-release), configúralo en false. Por defecto es {{ ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora' }} (es decir, true en distribuciones basadas en Enterprise Linux).

  • borg_lock_wait_time: Config máximo de segundos para esperar a adquirir un repositorio/cache lock. Por defecto son 5 segundos.

  • borg_one_file_system: No cruzar límites de sistemas de archivos. Por defecto es true

  • borg_pip_packages: Paquetes de dependencia (pip) para instalar borg(backup) y borgmatic.

  • borg_remote_path: Ruta al ejecutable de borg en el remoto. Por defecto será borg.

  • borg_remote_rate_limit: Límite de tasa de carga de red remota en kiBytes/segundo.

  • borg_retention_policy: Política de retención sobre cuántas copias de seguridad mantener en cada categoría (diaria, semanal, mensual, etc).

  • borg_source_directories: Lista de carpetas locales para hacer copias de seguridad. El valor por defecto es /etc/hostname para evitar una copia de seguridad vacía.

  • borg_ssh_key_name: Nombre de la clave pública y privada SSH. Por defecto id_ed25519

  • borg_ssh_key_file_path: Clave SSH a utilizar. Por defecto ~/.ssh/{{ borg_ssh_key_name }}

  • borg_ssh_key_type: El algoritmo utilizado para generar la clave privada SSH. Elige: rsa, dsa, rsa1, ecdsa, ed25519. Por defecto: ed25519

  • borg_ssh_command: Comando a usar en lugar de simplemente "ssh". Esto se puede usar para especificar opciones de SSH.

  • borg_version: Forzar una versión específica de borg a instalar

  • borg_venv_path: Ruta para almacenar el venv para borg(backup) y borgmatic

  • borgmatic_check_last: Número de archivos a verificar. Por defecto es 3

  • borgmatic_checks: Lista de verificaciones de consistencia. Por defecto, se realizan verificaciones mensuales. Consulta documentos para todas las opciones.

  • borgmatic_config_name: Nombre para usar en el archivo de configuración de Borgmatic. Por defecto es config.yaml

  • borgmatic_timer_hour: Hora en que se ejecutará el trabajo regular de creación y poda de cron/temporizador de systemd. Por defecto es {{ 6 | random }}

  • borgmatic_timer_minute: Minuto en que se ejecutará el trabajo regular de creación y poda de cron/temporizador de systemd. Por defecto es {{ 59 | random }}

  • borgmatic_hooks: Hooks para monitorear tus copias de seguridad, por ejemplo, con Healthchecks. Consulta la documentación oficial para más información.

  • borgmatic_timer: Si la variable está configurada, se instala un temporizador. Debe elegirse entre cron y systemd.

  • borgmatic_relocated_repo_access_is_ok: Ignorar error de Borg sobre un repositorio que se ha movido. Por defecto es false

  • borgmatic_store_atime: Almacenar atime en el archivo. Por defecto es true

  • borgmatic_store_ctime: Almacenar ctime en el archivo. Por defecto es true

  • borgmatic_version: Forzar una versión específica de borgmatic a instalar

  • borg_user: Nombre del usuario para crear copias de seguridad (cuenta de servicio)

  • borg_group: Nombre del grupo para crear copias de seguridad (cuenta de servicio)

Contribuciones

Las solicitudes de extracción (PR) son bienvenidas, siempre y cuando añadan funciones relevantes para un número significativo de usuarios. Todas las PR se prueban por estilo y funcionalidad. Para ejecutar pruebas localmente (necesita Docker):

$ pip install -r requirements-dev.txt
$ molecule test

Licencia

MIT/BSD

Autor

© 2018-2023 Manuel Riel y contribuidores.

Acerca del proyecto

Set up backup to remote machine using Borg and Borgmatic.

Instalar
ansible-galaxy install borgbase.ansible_role_borgbackup
Licencia
mit
Descargas
34.4k
Propietario
Simple and Secure Offsite Backups