papanito.borg
Rol de Ansible "papanito.borg"
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
otarget_dir
Notas
Si el repositorio
target_dir
ya existe, se omitirá la inicialización Si no se especificabackup_server
, el rol asume una copia de seguridad local, es decir, en un directorio localCrear un servicio
systemd
que ejecuta regularmente (segúnbackup_schedule
) el scriptborg.sh
de borgbackup.orgHabrá un script borg individual llamado
automatic-backup-{{service_name}}.sh
en/opt/borg_backup
que se personaliza con:backup_source_dir
backup_exclude_file
obackup_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 excluirTiene 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
ansible-galaxy install papanito.borg