hanru.lsyncd
Lsyncdの設定
概要
このAnsibleロールは、マスターホストからスレーブホストへの同期を設定します。マスター上のLsyncdデーモンが同期を担当します。マスターは1つだけですが、スレーブは複数存在することができます。また、マスター上の同期元とスレーブ上の同期先も複数指定できます。
マスター上では、lsyncdデーモンはrootとして実行されます。スレーブ上には専用のlsyncdユーザーが作成されます。このユーザーはsudo rsync
を実行することができ、同期されたファイルの権限を保持します。同期する際には、rootはlsyncdユーザーとしてスレーブにSSH接続し、そこで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)、Debianではデフォルトで8192です。lsyncdで大量のファイルを監視する場合は、この数値を増やすことを検討してください。
lsyncd_master_hostname:
マスターのホスト名です。インベントリ内のinventory_hostname
の1つである必要があります。マスターは1つだけです。以下の例を参照してください。
lsyncd_master_identity_file: /root/.ssh/id_rsa_lsyncd
マスター上のrootユーザーのSSHプライベートキーのファイル名です。このファイルが存在しない場合、新しい鍵ペアが生成されます。
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
このインベントリに対して、Ansibleのinventory_hostname
変数はtest1
、test2
、test3
です。そのうちの1つがマスターホストである必要があります。test1
をマスターとして選択します。他の2つはスレーブとして機能します。
以下は例のプレイブックです。
- 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