hanru.lsyncd
Configurations de Lsyncd
Aperçu
Ce rôle Ansible configure la synchronisation de l'hôte master vers l'hôte(s) slave. Le démon Lsyncd sur le master est responsable de la synchronisation. Il n'y a qu'un seul maître, tandis qu'il peut y avoir plusieurs esclaves. Il peut également y avoir plusieurs sources (sur le master) et cibles (sur les esclaves) à synchroniser.
Sur le master, le démon lsyncd s'exécute en tant que root. Sur les esclaves, un utilisateur lsyncd dédié est créé. Cet utilisateur peut exécuter sudo rsync
afin que les fichiers synchronisés conservent leurs permissions. Lors de la synchronisation, root se connecte par SSH sur les esclaves en tant qu'utilisateur lsyncd et exécute la commande rsync
là-bas.
Comme lsyncd fonctionne en arrière-plan, une paire de clés SSH sans mot de passe est générée pour root sur le master. La clé publique correspondante est envoyée à chaque esclave.
Sur le master, le fichier d'état de lsyncd se trouve à /var/lib/lsyncd/status
, et le journal lsyncd est situé à /var/log/lsyncd.log
. Vous devriez vérifier régulièrement ces fichiers en cas de problèmes éventuels.
Ce rôle a été testé avec succès sur Debian Jessie (8.x), Debian Stretch (9.x), Ubuntu Trusty (14.04) et Ubuntu Xenial (16.04).
Variables du Rôle
lsyncd_inotify_max_watches: 65536
Le nombre maximal de répertoires que lsyncd surveille. Il s'agit d'une limite du noyau Linux (fs.inotify.max_user_watches) qui est de 8192 par défaut sur Debian. Envisagez d'augmenter ce nombre quand lsyncd surveille un grand nombre de fichiers.
lsyncd_master_hostname:
Le nom d'hôte du master. Doit être un inventory_hostname
dans l'inventaire. Il n'y a qu'un seul master. Voir l'exemple ci-dessous.
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
Le nom du fichier de la clé privée SSH de l'utilisateur root sur le master. Une nouvelle paire de clés sera générée si le fichier n'existe pas.
lsyncd_slave_hosts: []
Une liste de FQDN ou d'adresses IP des hôtes esclaves. Il peut y avoir plusieurs esclaves.
lsyncd_slave_username: lsyncd
Le nom d'utilisateur sur les esclaves que le master utilise pour se connecter via SSH.
lsyncd_sources_and_targets: []
Une liste de sources sur le master à synchroniser avec des cibles sur les esclaves. Il peut y avoir plusieurs paires de sources et de cibles. Voir l'exemple ci-dessous.
lsyncd_settings_status_interval: 10
lsyncd_sync_delay: 15
Paramètres d'ajustement fin de Lsyncd. Ne changez pas ces valeurs à moins de savoir ce que vous faites.
Dépendances
Ce rôle n'a pas de dépendances.
Exemple de Playbook
Préparez d'abord un inventaire. Nous utilisons l'inventaire suivant dans notre exemple.
[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
Notez que les variables inventory_hostname
d'Ansible sont test1
, test2
et test3
pour cet inventaire. L'un d'eux doit être l'hôte master. Nous choisissons test1
comme notre master. Les deux autres serviront d'esclaves.
Voici un exemple 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 }
Licence
MIT