BUNSEN

個人的な学習ログ

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