gantsign.backup
Rol de Ansible: Copia de Seguridad
Rol para hacer copias de seguridad y restaurar archivos y directorios. Utiliza rsync pero está pensado para usar con un disco de respaldo montado localmente.
Durante la provisión, este rol restaurará cualquier archivo y directorio que se haya respaldado previamente. Una vez que el sistema se reinicie, realizará copias de seguridad incrementales cada 5 minutos y durante el apagado.
La copia de seguridad es un espejo simple del directorio de origen, las versiones anteriores de los archivos se descartan. El objetivo principal es mantener archivos entre reconstrucciones de tu máquina virtual de desarrollo local. Si no puedes permitirte perder o reemplazar tus archivos, utiliza una solución de copia de seguridad remota con versionado.
Este rol está principalmente destinado a respaldar y restaurar el contenido del directorio personal de un usuario.
Requisitos
Ansible >= 2.9
Distribución de Linux
Familia Debian
Ubuntu
- Bionic (18.04)
- Focal (20.04)
Nota: otras versiones probablemente funcionen, pero no se han probado.
Variables del Rol
Las siguientes variables cambiarán el comportamiento de este rol:
# La frecuencia para realizar la copia de seguridad
backup_frequency_minutes: 5
# Usuario que posee los archivos para respaldar/restaurar
backup_user: # Obligatorio
# El directorio de origen que contiene los archivos a respaldar (debe terminar con /)
backup_src: # Obligatorio
# El directorio de destino para respaldar los archivos (debe terminar con /)
backup_dest: # Obligatorio
# El filtro rsync de archivos/directorios a incluir/excluir
backup_filter: |
!
# Incluir todo
+ /*
# Directorio para scripts de copia de seguridad
backup_script_dir: '~/.backup'
# El nombre para usar en cron
backup_cron_name: backup
# El nombre para usar en el servicio systemd
backup_service_name: backup
Ejemplos de Playbooks
Aquí tienes un ejemplo simple de un playbook:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: ejemplo_usuario
backup_src: /home/ejemplo_usuario/
backup_dest: /mnt/backup/ejemplo_usuario/
backup_filter: |
# Restablecer filtro
!
# Incluir archivo / directorio
+ /incluir_me
# Incluir subdirectorio (solo necesario si vas a excluir otros subdirectorios)
+ /incluir_me/yo_también
# Excluir todo menos yo_también
- /incluir_me/*
# Excluir por nombre de archivo/directorio
- tmp
# Excluir todo lo demás
- /*
Aquí tienes un ejemplo real de un playbook:
- hosts: servers
roles:
- role: gantsign.backup
backup_user: vagrant
backup_src: /home/vagrant/
backup_dest: /var/persistent/home/vagrant/
backup_filter: |
!
+ /.atom
+ /.atom
+ /.atom/config.cson
- /.atom/*
+ /.bash_history
+ /.config
+ /.config/Code
+ /.config/Code/User
+ /.config/Code/User/settings.json
- /.config/Code/User/*
- /.config/Code/*
- /.config/*
+ /.gitconfig
+ /.gnupg
+ /.m2
- /.m2/repository
- /.m2/wrapper
+ /.ssh
- /.ssh/authorized_keys
+ /workspace
+ /.zsh_history
- target/*
- build/*
- node_modules
- /*
Más Roles de GantSign
Puedes encontrar más roles de GantSign en Ansible Galaxy.
Desarrollo y Pruebas
Este proyecto utiliza Molecule para ayudar en el desarrollo y pruebas; el rol se prueba unitaria usando Testinfra y pytest.
Para desarrollar o probar necesitarás tener instalado lo siguiente:
Como lo anterior puede ser complicado de instalar, este proyecto incluye Molecule Wrapper. Molecule Wrapper es un script en shell que instala Molecule y sus dependencias (excepto Linux) y luego ejecuta Molecule con el comando que le pases.
Para probar este rol usando Molecule Wrapper, ejecuta el siguiente comando desde la raíz del proyecto:
./moleculew test
Nota: algunas de las dependencias necesitan permisos sudo
para instalar.
Licencia
MIT
Información del Autor
John Freeman
GantSign Ltd. Número de empresa: 06109112 (registrada en Inglaterra)
Role for backing up and restoring files and directories.
ansible-galaxy install gantsign.backup