hanru.lsyncd
Configuraciones de Lsyncd
Descripción General
Este rol de Ansible configura la sincronización desde el host maestro a los hosts esclavos. El daemon Lsyncd en el maestro es responsable de la sincronización. Solo hay un maestro, mientras que puede haber más de un esclavo. También puede haber más de una fuente (en el maestro) y destino (en el esclavo) que se sincronizan.
En el maestro, el daemon lsyncd se ejecuta como root. En los esclavos, se crea un usuario dedicado lsyncd. Este usuario puede ejecutar sudo rsync
para que los archivos sincronizados puedan conservar sus permisos. Al sincronizar, el root se conecta por ssh
a los esclavos como el usuario lsyncd y ejecuta el comando rsync
allí.
Debido a que lsyncd se ejecuta en segundo plano, se genera un par de claves SSH sin contraseña para el root en el maestro. La clave pública correspondiente se envía a cada esclavo.
En el maestro, el archivo de estado de lsyncd se encuentra en /var/lib/lsyncd/status
y el registro de lsyncd se encuentra en /var/log/lsyncd.log
. Debes revisar estos archivos regularmente por si hay problemas.
Este rol ha sido probado con éxito en Debian Jessie (8.x), Debian Stretch (9.x), Ubuntu Trusty (14.04) y Ubuntu Xenial (16.04).
Variables del Rol
lsyncd_inotify_max_watches: 65536
El número máximo posible de directorios que lsyncd vigila. Este es un límite del núcleo de Linux (fs.inotify.max_user_watches) que por defecto es 8192 en Debian. Considera aumentar este número cuando lsyncd esté vigilando un gran número de archivos.
lsyncd_master_hostname:
El nombre del host maestro. Debe ser uno de los inventory_hostname
en el inventario. Solo hay un maestro. Ver ejemplo a continuación.
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
El nombre del archivo de la clave privada SSH del usuario root en el maestro. Se generará un nuevo par de claves si el archivo no existe.
lsyncd_slave_hosts: []
Una lista de FQDN o direcciones IP de los hosts esclavos. Puede haber múltiples esclavos.
lsyncd_slave_username: lsyncd
El nombre de usuario en los esclavos que el maestro usa para iniciar sesión a través de SSH.
lsyncd_sources_and_targets: []
Una lista de fuentes en el maestro que se sincronizarán con destinos en los esclavos. Puede haber múltiples pares de fuente y destino. Ver ejemplo a continuación.
lsyncd_settings_status_interval: 10
lsyncd_sync_delay: 15
Parámetros de ajuste fino de lsyncd. No cambies estos valores a menos que sepas lo que estás haciendo.
Dependencias
Este rol no tiene dependencias.
Ejemplo de Playbook
Primero, prepara un inventario. Usamos el siguiente inventario en nuestro ejemplo.
[lsyncd]
test1 ansible_host=10.0.0.1 ansible_user=root
test2 ansible_host=10.0.0.2 ansible_user=root
test3 ansible_host=10.0.0.3 ansible_user=root
Ten en cuenta que las variables inventory_hostname
de Ansible son test1
, test2
y test3
para este inventario. Uno de ellos debe ser el host maestro. Elegimos test1
como nuestro maestro. Los otros dos servirán como esclavos.
Aquí tienes un ejemplo de playbook.
- hosts: lsyncd
vars:
lsyncd_master_hostname: test1
lsyncd_slave_hosts:
- 10.0.0.2
- 10.0.0.3
lsyncd_sources_and_targets:
- source: /var/www
target: /var/www
- source: /home
target: /backup/home
roles:
- { role: hanru.lsyncd }
Licencia
MIT
Referencias
ansible-galaxy install hanru.lsyncd