geerlingguy.backup

Rol de Ansible: Copia de Seguridad para Servidores Simples

CI

Realiza copias de seguridad de servidores Linux con una solución sencilla basada en Rsync y Cron.

Requisitos

Se necesita tener instalado lo siguiente:

  • rsync
  • cron

Es necesario tener MySQL o una base de datos compatible con MySQL instalada si deseas habilitar las copias de seguridad de bases de datos MySQL.

También se asume que tienes un servidor en algún lugar que puede recibir datos de respaldo a través de Rsync. En este servidor de respaldo, necesitas instalar rsync y configurar cuentas con autenticación SSH que permitan que este rol entregue las copias de seguridad a un directorio específico a través de SSH.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con valores predeterminados (ver defaults/main.yml):

backup_cron_job_state: presente
backup_hour: "3"
backup_minute: "00"

Controla si el script de copia de seguridad se llama a través de un trabajo cron gestionado. Debes escalonar los tiempos de copia de seguridad entre los servidores para que tu servidor de respaldo no reciba una gran cantidad de datos de golpe.

backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"

Usuario bajo el cual se ejecutarán los trabajos de copia de seguridad.

backup_path: /home/{{ backup_user }}/backups

Ruta donde se almacenará la configuración de respaldos. En términos generales, deberías utilizar una cuenta de usuario especial para respaldos, pero puedes establecer esto a cualquier cuenta que tenga acceso adecuado a los directorios que necesitas respaldar.

backup_directories:
  - /home/{{ backup_user }}/domains
  - /home/{{ backup_user }}/repositories

Directorios a respaldar. {{ backup_user }} debe tener acceso de lectura a estos directorios. Cada directorio se sincronizará con el servidor de respaldo a través de un comando rsync separado en el script de copia de seguridad.

backup_exclude_items:
  - .DS_Store
  - cache
  - tmp

Elementos a excluir de las copias de seguridad. Cada elemento se añadirá como una nueva línea en un archivo de exclusiones utilizado por el comando rsync de respaldo. Lee este artículo para una explicación sobre cómo funciona la opción --exclude.

backup_identifier: id_aqui
backup_remote_connection: [email protected]

Opciones para controlar a dónde se entrega la copia de seguridad. Se asume que estarás enviando las copias de seguridad a un servidor de respaldo a través de SSH. La gestión de claves SSH y la autenticación deben manejarse por separado de este rol.

backup_remote_base_path: "~/backups"

La ruta completa en el servidor de respaldo remoto donde se almacenarán las copias de seguridad (todas las copias de seguridad para cada servidor están dentro de un directorio nombrado por el backup_identifier).

backup_remote_host_name: ''
backup_remote_host_key: ''

Agrega los detalles de la clave del host remoto para asegurar que la clave del host esté presente y no haya errores de conexión SSH basados en la autenticación de claves. Deja en blanco si has desactivado la verificación de claves del host o si la clave del host ya está agregada al servidor a través de algún otro mecanismo.

backup_remote_connection_ssh_options: ''

Agrega opciones de conexión SSH (por ejemplo, -p [puerto]), como se documenta en el manual del comando SSH.

backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''

Opciones para respaldar bases de datos MySQL (o compatibles con MySQL). Ten en cuenta que el ansible_ssh_user utilizado al ejecutar este rol debe poder agregar usuarios de MySQL para que esta funcionalidad sea manejada por este rol. En lugar de crear una nueva cuenta de usuario de MySQL, puedes proporcionar una ya existente usando backup_mysql_credential_file, un archivo de opciones como se documenta en las Guías de Usuario Final sobre Seguridad de Contraseñas.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: servidores

  vars:
    backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
    backup_user: "backupuser"
    backup_remote_connection: [email protected]
    backup_hour: "1"
    backup_minute: "15"
    backup_mysql: false
    backup_directories:
      - /etc/myapp
      - /var/myapp/data
      - /home/myuser

  roles:
    - geerlingguy.backup

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2017 por Jeff Geerling, autor de Ansible for DevOps.

Instalar
ansible-galaxy install geerlingguy.backup
Licencia
mit
Descargas
17k
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns