ansibleの曲者synchronizeモジュール
概要
Ansibleを使っての運用をする機会が増えてきた今日このごろ。
被管理ホストでバックアップをするために、ファイルをansibleホストに転送しようとしたときにこのsynchronize
モジュールに出会いました。
最初のうちは便利だなと思い公式ページを見ていたが 使って/調べていくにつれてやけに自身の認識と実際の動作に差が開いていった。 マジで使いづらい。。。 ということでまとめます。
synchronize
モジュールとは
公式によると「rsyncのラッパーである」と書かれている。 つまり裏ではrsyncが動作しているとのこと。
rsyncは管理/被管理ノードで起動し、その間でファイルの転送を実施する。 そのため両ホストにrsyncがインストールされている必要がある。
rsync実行にはsudo権限が必要であるためansibleユーザにsudo権限が必要。 ※パスワードなしsudo権限でないとNG。パスワードありsudoだとrsyncが起動できずエラーで終了する。
動作パターン①
localhostで動作し、被管理ホストにローカルファイルを送り込む。
- hosts: target - tasks: - synchronize: mode: push src: <local_path_to_file> dest: <remote_path_to_file>
動作パターン②
localhostで動作し、被管理ホストからローカルにファイルを取り込む。
- hosts: target - tasks: - synchronize: mode: pull src: <remote_path_to_file> dest: <local_path_to_file>
動作パターン③
被管理ホストで動作し、localhostにファイルを送り込む(結果はパターン②と同じ)
- hosts: target - tasks: - synchronize: mode: push src: <remote_path_to_file> dest: <local_path_to_file> delegate_to: target
動作パターン④
被管理ホストで動作し、localhostからファイルを取り込む(結果はパターン①と同じ)
- hosts: target - tasks: - synchronize: mode: pull src: <local_path_to_file> dest: <remote_path_to_file> delegate_to: target