hanru.lsyncd
Konfiguracje Lsyncd
Przegląd
Ta rola Ansible konfiguruje synchronizację z hosta master do hostów slave. Demon Lsyncd na masterze odpowiada za synchronizację. Jest tylko jeden master, podczas gdy może być więcej niż jeden slave. Mogą również być źródła (na masterze) i cele (na slave) do synchronizacji.
Na masterze, demon lsyncd działa jako root. Na slave'ach tworzony jest dedykowany użytkownik lsyncd. Użytkownik ten ma uprawnienia do wykonywania sudo rsync, dzięki czemu synchronizowane pliki mogą mieć zachowane uprawnienia. Podczas synchronizacji, root łączy się z slave'ami jako użytkownik lsyncd i wykonuje tam polecenie rsync.
Ponieważ lsyncd działa w tle, dla roota na masterze generowany jest bezhasłowy klucz SSH. Odpowiedni klucz publiczny jest wysyłany do każdego slave'a.
Na masterze plik statusu lsyncd znajduje się w /var/lib/lsyncd/status, a logi lsyncd w /var/log/lsyncd.log. Powinieneś regularnie sprawdzać te pliki w przypadku ewentualnych problemów.
Ta rola była pomyślnie testowana na Debian Jessie (8.x), Debian Stretch (9.x) oraz Ubuntu Trusty (14.04), Ubuntu Xenial (16.04).
Zmienne roli
lsyncd_inotify_max_watches: 65536
Maksymalna liczba katalogów, które lsyncd obserwuje. Jest to limit jądra Linux (fs.inotify.max_user_watches), który domyślnie wynosi 8192 na Debianie. Rozważ zwiększenie tej liczby, gdy lsyncd obserwuje dużą liczbę plików.
lsyncd_master_hostname:
Nazwa hosta master. Powinna być jednym z inventory_hostname w inwentarzu. Jest tylko jeden master. Zobacz przykład poniżej.
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
Nazwa pliku prywatnego klucza SSH użytkownika root na masterze. Nowa para kluczy zostanie wygenerowana, jeśli plik nie istnieje.
lsyncd_slave_hosts: []
Lista FQDN lub adresów IP hostów slave. Może być wielu slave'ów.
lsyncd_slave_username: lsyncd
Nazwa użytkownika na slave'ach, którego master używa do logowania się przez SSH.
lsyncd_sources_and_targets: []
Lista źródeł na masterze, które mają być synchronizowane z celami na slave'ach. Może być wiele par źródło-cel. Zobacz przykład poniżej.
lsyncd_settings_status_interval: 10
lsyncd_sync_delay: 15
Parametry dostrajania Lsyncd. Nie zmieniaj ich, chyba że wiesz, co robisz.
Zależności
Ta rola nie ma zależności.
Przykład Playbooka
Najpierw przygotuj inwentarz. W naszym przykładzie używamy następującego inwentarza.
[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
Zauważ, że zmienne Ansible inventory_hostname to test1, test2 i test3 dla tego inwentarza. Jeden z nich musi być hostem master. Wybieramy test1 jako nasz master. Pozostałe dwa będą działać jako slave.
Oto przykład playbooka.
- 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 }
Licencja
MIT
Referencje
ansible-galaxy install hanru.lsyncd