hanru.lsyncd
Lsyncd-Konfigurationen
Übersicht
Diese Ansible-Rolle konfiguriert die Synchronisierung vom Master-Host zu Slave-Hosts. Der Lsyncd-Daemon auf dem Master ist verantwortlich für die Synchronisierung. Es gibt nur einen Master, während mehrere Slaves vorhanden sein können. Es kann auch mehr als eine Synchronisierungsquelle (auf dem Master) und mehrere Ziele (auf dem Slave) geben.
Auf dem Master läuft der lsyncd-Daemon als root. Auf den Slaves wird ein dedizierter lsyncd-Benutzer erstellt. Dieser Benutzer kann sudo rsync
ausführen, damit die synchronisierten Dateien die Berechtigungen beibehalten können. Bei der Synchronisierung meldet sich der root per ssh
als lsyncd-Benutzer auf den Slaves an und führt dort den rsync
-Befehl aus.
Da lsyncd im Hintergrund läuft, wird ein passwortloses SSH-Schlüsselpaar für root auf dem Master generiert. Der entsprechende öffentliche Schlüssel wird an jeden Slave gesendet.
Auf dem Master befindet sich die lsyncd-Statusdatei unter /var/lib/lsyncd/status
, das lsyncd-Protokoll unter /var/log/lsyncd.log
. Sie sollten diese Dateien regelmäßig überprüfen, um mögliche Probleme zu erkennen.
Diese Rolle wurde erfolgreich auf Debian Jessie (8.x), Debian Stretch (9.x) sowie Ubuntu Trusty (14.04) und Ubuntu Xenial (16.04) getestet.
Rollenvariablen
lsyncd_inotify_max_watches: 65536
Die maximal mögliche Anzahl von Verzeichnissen, die lsyncd überwacht. Dies ist ein Limit des Linux-Kernels (fs.inotify.max_user_watches), das standardmäßig auf Debian 8192 beträgt. Ziehen Sie in Betracht, diese Zahl zu erhöhen, wenn lsyncd eine große Anzahl von Dateien überwacht.
lsyncd_master_hostname:
Der Hostname des Masters. Sollte ein inventory_hostname
in der Inventarliste sein. Es gibt nur einen Master. Siehe Beispiel unten.
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
Der Dateiname des privaten SSH-Schlüssels des root-Benutzers auf dem Master. Ein neues Schlüsselpaar wird generiert, wenn die Datei nicht existiert.
lsyncd_slave_hosts: []
Eine Liste von FQDN oder IP-Adressen der Slave-Hosts. Es können mehrere Slaves vorhanden sein.
lsyncd_slave_username: lsyncd
Der Benutzername auf den Slaves, mit dem sich der Master per SSH anmeldet.
lsyncd_sources_and_targets: []
Eine Liste von Quellen auf dem Master, die mit Zielen auf den Slaves synchronisiert werden sollen. Es kann mehrere Quell-Ziel-Paare geben. Siehe Beispiel unten.
lsyncd_settings_status_interval: 10
lsyncd_sync_delay: 15
Feinabstimmungsparameter für Lsyncd. Ändern Sie diese nicht, es sei denn, Sie wissen, was Sie tun.
Abhängigkeiten
Diese Rolle hat keine Abhängigkeiten.
Beispiel-Playbook
Zuerst bereiten Sie ein Inventory vor. Wir verwenden das folgende Inventory in unserem Beispiel.
[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
Beachten Sie, dass die Ansible-inventory_hostname
-Variablen test1
, test2
und test3
für dieses Inventory sind. Einer von ihnen muss der Master-Host sein. Wir wählen test1
als unseren Master. Die anderen beiden dienen als Slaves.
Hier ist ein Beispiel-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 }
Lizenz
MIT