lsyncd
Конфигурации Lsyncd
Обзор
Этот роль Ansible настраивает синхронизацию с мастер хоста на слейв хосты. Демон Lsyncd на мастере отвечает за синхронизацию. Существует только один мастер, в то время как может быть несколько слейвов. Также может быть несколько синхронизирующих источников (на мастере) и целей (на слейвах).
На мастере демон lsyncd работает от имени root. На слейвах создается специальный пользователь lsyncd. Этот пользователь может выполнять sudo rsync
, чтобы синхронизируемые файлы могли сохранить свои права доступа. При синхронизации root заходит по ssh
на слейвы как пользователь lsyncd и выполняет команду rsync
.
Поскольку lsyncd работает в фоновом режиме, для root на мастере генерируется пара SSH-ключей без пароля. Соответствующий открытый ключ отправляется на каждый слейв.
На мастере файл состояния lsyncd находится по адресу /var/lib/lsyncd/status
, а лог lsyncd — по адресу /var/log/lsyncd.log
. Вы должны регулярно проверять эти файлы на случай возможных проблем.
Эта роль успешно протестирована на Debian Jessie (8.x), Debian Stretch (9.x) и Ubuntu Trusty (14.04), Ubuntu Xenial (16.04).
Переменные роли
lsyncd_inotify_max_watches: 65536
Максимально возможное количество директорий, которые lsyncd может отслеживать. Это ограничение ядра Linux (fs.inotify.max_user_watches), по умолчанию равное 8192 на Debian. Рассмотрите возможность увеличения этого числа, если lsyncd отслеживает большое количество файлов.
lsyncd_master_hostname:
Имя хоста мастера. Должно соответствовать одному inventory_hostname
в инвентаре. Мастер только один. См. пример ниже.
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
Имя файла закрытого SSH-ключа пользователя root на мастере. Если файл не существует, будет сгенерирована новая пара ключей.
lsyncd_slave_hosts: []
Список FQDN или IP-адресов слейв-хостов. Может быть несколько слейвов.
lsyncd_slave_username: lsyncd
Имя пользователя на слейвах, которое мастер использует для входа через SSH.
lsyncd_sources_and_targets: []
Список источников на мастере, которые нужно синхронизировать с целями на слейвах. Может быть несколько пар источник-цель. См. пример ниже.
lsyncd_settings_status_interval: 10
lsyncd_sync_delay: 15
Параметры тонкой настройки Lsyncd. Не изменяйте их, если не знаете, что делаете.
Зависимости
Эта роль не имеет зависимостей.
Пример плейбука
Сначала подготовьте инвентарь. Мы используем следующий инвентарь в нашем примере.
[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
Обратите внимание, что переменные inventory_hostname
Ansible — это test1
, test2
и test3
для этого инвентаря. Один из них должен быть мастером. Мы выбираем test1
в качестве нашего мастера. Другие два будут слейвами.
Вот пример плейбука.
- 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 }
Лицензия
MIT
Ссылки
ansible-galaxy install hanru/ansible-lsyncd