hanru.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.lsyncd