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