papanito.borg

Rol de Ansible "papanito.borg"

Rol de Ansible Puntaje de Calidad de Ansible Rol de Ansible Problemas de GitHub Peticiones de GitHub

El rol de Ansible instala y configura copias de seguridad regulares con borg. El rol realiza lo siguiente:

  • [Opcional] Eliminar el repositorio existente

  • Inicializar un repositorio en protocol://backup_server:target_dir o target_dir

    Notas

    Si el repositorio target_dir ya existe, se omitirá la inicialización Si no se especifica backup_server, el rol asume una copia de seguridad local, es decir, en un directorio local

  • Crear un servicio systemd que ejecuta regularmente (según backup_schedule) el script borg.sh de borgbackup.org

  • Habrá un script borg individual llamado automatic-backup-{{service_name}}.sh en /opt/borg_backup que se personaliza con:

    • backup_source_dir
    • backup_exclude_file o backup_exclude_list
    • backup_schedule

Requisitos

Ninguno

Variables del Rol

Estas son todas las variables:

Parámetro Descripción Valor por Defecto
backup_server Nombre del servidor de copias de seguridad - si no se define, asume una copia de seguridad local -
backup_user Nombre del usuario para conectarse al servidor -
backup_port Puerto para conectarse a backup_server -
protocol Protocolo utilizado para conectarse a backup_server ssh
backup_name [obligatorio] Nombre de la copia de seguridad
backup_encryption_key [obligatorio] Frase de contraseña para la clave de cifrado usando repokey -
backup_encryption_method Método de cifrado de Borg, actualmente solo se implementa repokey repokey
target_dir Directorio objetivo de las copias de seguridad en el backup_server "./backups/{{ backup_name }}"
backup_delete ADVERTENCIA Si se establece en true, entonces el repositorio de copias de seguridad existente será eliminado false
backup_create Creación del repositorio. Puede usar el rol para eliminar explícitamente un repositorio existente ejecutando el rol con -e backup_delete=true -e backup_create=false true
backup_schedule Notación de programación de systemd para ejecutar la copia de seguridad diaria *-*-* 03:00:00
backup_include_list Lista de directorios fuente para respaldar -
backup_exclude_file EXCLUDEFILE que contiene patrones a excluir
Tiene prioridad sobre backup_exclude_list
-
backup_exclude_list Lista de patrones que se añadirán como --exclude 'PATTERN' -

Los siguientes parámetros están relacionados con el archivo del servicio systemd:

Parámetro Descripción Valor por Defecto
systemd_target_dir Ubicación donde copiar los archivos .service /etc/systemd/system/
borg_systemd_user Usuario para el servicio systemd backup
borg_systemd_group Grupo para el servicio systemd backup
borg_systemd_on_failure Si se establece, hará una entrada [OnFailure] en el archivo de servicio -
systemd_script_mode Modo del archivo de script 0774
systemd_service_mode Modo del archivo de servicio 0644

El script que se despliega también define las opciones para prune como se describe en borg prune. Si se espera un número pero no se define la variable, la opción no se proporciona.

Parámetro Descripción Valor por Defecto
backup_prune_dryrun -n, --dry-run no cambia el repositorio false
backup_prune_force --force fuerza el recorte de archivos corruptos false
backup_prune_stats -s, --stats imprime estadísticas para el archivo eliminado true
backup_prune_list --list salida de lista detallada de archivos que mantiene/prune true
backup_prune_keep_within --keep-within INTERVAL mantener todos los archivos dentro de este intervalo de tiempo -
backup_prune_keep_last --keep-last, --keep-secondly número de archivos por segundo para mantener -
backup_prune_keep_minutely --keep-minutely número de archivos por minuto para mantener -
backup_prune_keep_hourly -H, --keep-hourly número de archivos por hora para mantener -
backup_prune_keep_daily -d, --keep-daily número de archivos diarios para mantener -
backup_prune_keep_weekly -w, --keep-weekly número de archivos semanales para mantener -
backup_prune_keep_monthly -m, --keep-monthly número de archivos mensuales para mantener -
backup_prune_keep_yearly -y, --keep-yearly número de archivos anuales para mantener -
backup_prune_save_space --save-space trabaja más lento, pero usando menos espacio false

Para mantener la información sensible oculta, se recomienda usar ansible-vault

Puede definir el archivo de contraseña en ansible.cfg para que no sea necesario especificar ningún parámetro de vault. Así, la variable encriptada backup_encryption_key se puede crear de la siguiente manera:

ansible-vault encrypt_string  'SupersecretPa$$phrase' --name 'backup_encryption_key'

Dependencias

Ninguna

Ejemplos

Ejemplo de Playbook de copia de seguridad remota

Incluir un ejemplo de cómo usar su rol (por ejemplo, con variables pasadas como parámetros) es útil para los usuarios:

- hosts: localhost
  vars:
  - backup_server: borg.intra
  - backup_user: borguser
  - backup_name: mybackupname
  - backup_encryption_key: test
  - backup_port: 23
  - target_dir: "/var/backups/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1
  
  roles:
  - role: papanito.borg

Esto creará una copia de seguridad en ssh://[email protected]:/var/backup/mybackupname y los siguientes archivos de systemd:

  • /opt/borg_backup/automatic-backup-mybackupname-borg.intra.sh (script de copia de seguridad)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.service (archivo de servicio systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-borg.intra.timer (archivo de temporizadores de systemd)

Ejemplo de Playbook de copia de seguridad local

Incluir un ejemplo de cómo usar su rol (por ejemplo, con variables pasadas como parámetros) es útil para los usuarios:

- hosts: localhost
  vars:
  - backup_name: mybackupname
  - backup_encryption_key: test
  - target_dir: "/var/backup/"
  - backup_schedule: "*-*-* 03:00:00"
  - backup_exclude_list:
    - "*/Downloads"
    - "*/google-chrome*"
  - backup_include_list:
    - /home/papanito
  - backup_prune_keep_daily: 7
  - backup_prune_keep_weekly: 5
  - backup_prune_keep_monthly: 6
  - backup_prune_keep_yearly: 1

Esto creará una copia de seguridad en /var/backup/mybackupname y los siguientes archivos de systemd:

  • /opt/borg_backups/automatic-backup-mybackupname-local.sh (script de copia de seguridad)
  • /etc/systemd/system/automatic-backup-mybackupname-local.service (archivo de servicio systemd)
  • /etc/systemd/system/automatic-backup-mybackupname-local.timer (archivo de temporizadores de systemd)

Licencia

Este es software libre, publicado bajo los términos de la licencia Apache v2.

Información del Autor

Escrito por Papanito - Gitlab / Github

Acerca del proyecto

Ansible role do install and setup regular backups with borg

Instalar
ansible-galaxy install papanito.borg
Licencia
apache-2.0
Descargas
187
Propietario
A passionate DevOps Engineer from Switzerland, father of five and husband of the most beautiful and most amazing woman in the world.