borgbase.ansible_role_borgbackup
Rol de Ansible: Cliente de BorgBackup
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 instalarborg(backup)
yborgmatic
.borg_distro_packages
: contiene los nombres de los paquetes de distribución paraborg(backup)
yborgmatic
, solo se usa siborg_install_method
está configurado enpackage
.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 usapip
para instalar borgmatic. Para instalar a través del gestor de paquetes de tu distribución, configúralo enpackage
y (si es necesario) reemplaza la variableborg_distro_packages
para contener los nombres de los paquetes requeridos.borg_require_epel
: Al usarborg_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 paqueteepel-release
), configúralo enfalse
. 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 estrue
borg_pip_packages
: Paquetes de dependencia (pip) para instalarborg(backup)
yborgmatic
.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 defectoid_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 instalarborg_venv_path
: Ruta para almacenar el venv paraborg(backup)
yborgmatic
borgmatic_check_last
: Número de archivos a verificar. Por defecto es3
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 esconfig.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 entrecron
ysystemd
.borgmatic_relocated_repo_access_is_ok
: Ignorar error de Borg sobre un repositorio que se ha movido. Por defecto esfalse
borgmatic_store_atime
: Almacenar atime en el archivo. Por defecto estrue
borgmatic_store_ctime
: Almacenar ctime en el archivo. Por defecto estrue
borgmatic_version
: Forzar una versión específica de borgmatic a instalarborg_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.
Set up backup to remote machine using Borg and Borgmatic.
ansible-galaxy install borgbase.ansible_role_borgbackup