ホーム > Ansible Tower・AWX リファレンス
AnsibleのfetchモジュールをAWXと組み合わせて使用する方法を解説します。
fetchモジュールでは、被管理ホストからファイルをダウンロードすることが可能です。
コマンドラインのAnsible、Towerでも同様に使用可能です。
fetchモジュールについて
fetchモジュールは、一方通行(被管理ホスト→コントローラーサーバー)の[cp]コマンドのような動作をするモジュールです。
しかし、[cp]コマンドとは違い、ディレクトリのコピーが出来ないなど様々な制限があります。
制限としては、以下のようなものがあります。
- ディレクトリは取得出来ない
- 1つのファイルしか取得出来ない
- 権限や所有者、グループは保持出来ない
fetchモジュールで使用出来るパラメータになります。
これらを組み合わせることで、様々な処理を行うことが可能です。
パラメータ | 選択肢/デフォルト | 機能 |
---|---|---|
dest | 必須 | fetchするファイルの保存先を指定する。 |
fail_on_missing | ・no ・yes← | [yes]の場合、リモートファイルを読み込めない場合にタスクが失敗する。 |
flat | ・no← ・yes | [yes]かつdestの値が[/]で終わっている場合、destで指定したディレクトリ直下にファイルをfetchする。 [yes]かつdestの値が[/]で終わっていない場合、destで指定したディレクトリ名にファイルをリネームしつつfetchする。 [yes]に設定し、なおかつ複数のホストに接続した場合、同名のファイルをfetchすると、上書きされてしまう場合があるので注意が必要です。 |
src | 必須 | fetchするリモートのファイルを指定する。 ディレクトリは指定出来ません。 |
validate_checksum | ・no ・yes← | fetchしたファイルとリモートファイルのチェックサムが一致することを確認します。 |
AWXの各種定義
Ansible AWX での各種定義について記載しています。
テンプレート
今回実行するテンプレートの設定になります。
- 名前:Module Fetch Template
- 説明:fetchモジュール
- ジョブタイプ:実行
- インベントリー:SyuTaku Server Inventory
- プロジェクト:秋拓プロジェクト
- PLAYBOOK:fetch.yml
- 認証情報:awx
- 詳細:1(Verbose)
認証情報
今回使用する認証情報の設定になります。
- 名前:awx
- 説明:awxユーザ
- 認証情報タイプ:マシン
- ユーザー名:awx
- パスワード:「ユーザー名」に設定したユーザーに対応したパスワード
インベントリー
特別な設定はしていないため割愛します。
最小限の設定例(src,destのみ)
fetchモジュールの必須パラメーターである「src」と「dest」のみを指定して、ファイルのダウンロードを行う例です。
プレイブック
---
- hosts: all
gather_facts: False
tasks:
- name: ファイルのダウンロード
fetch:
src: /home/workspace/Test/file1.txt
dest: /home/workspace/
実行結果
プレイブックの実行結果です。
Using /etc/ansible/ansible.cfg as config file
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [ファイルのダウンロード] *************************************************************
changed: [SYUTAKUWEB01] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/home/workspace/SYUTAKUWEB01/home/workspace/Test/file1.txt", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "remote_md5sum": null}
PLAY RECAP *********************************************************************
SYUTAKUWEB01 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
フェッチしたファイルは、以下のような階層構造で格納されます。
/home/workspace/SYUTAKUWEB01/home/workspace/Test/file1.txt
分かりやすくすると、以下のようになります。
<[dest]の値>/<接続先のホスト名>/<[src]の値>
[flat]の使用例([dest]の末尾に[/]あり)
fetchモジュールの必須パラメーターに加えて、[flat]を追加し、
さらに、[dest]で指定するパスの末尾に[/]がある場合の例です。
プレイブック
---
- hosts: all
gather_facts: False
tasks:
- name: ファイルのダウンロード
fetch:
src: /home/workspace/Test/file1.txt
dest: /home/workspace/
flat: yes
実行結果
プレイブックの実行結果です。
Using /etc/ansible/ansible.cfg as config file
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [ファイルのダウンロード] *************************************************************
changed: [SYUTAKUWEB01] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/home/workspace/file1.txt", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "remote_md5sum": null}
PLAY RECAP *********************************************************************
SYUTAKUWEB01 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
フェッチしたファイルは、以下のような階層構造で格納されます。
[src]で指定したファイルのみが、[dest]で指定したパスに転送された形になります。
/home/workspace/file1.txt
[flat]の使用例([dest]の末尾に[/]なし)
fetchモジュールの必須パラメーターに加えて、[flat]を追加し、
さらに、[dest]で指定するパスの末尾に[/]が無い場合の例です。
プレイブック
末尾に[/]が無い場合は、[dest]に指定した値の最後尾にあるファイルにリネームする処理が走ります。
サンプルでは「file2.txt」としているので、「file1.txt」が「file2.txt」にリネームされます。
---
- hosts: all
gather_facts: False
tasks:
- name: ファイルのダウンロード
fetch:
src: /home/workspace/Test/file1.txt
dest: /home/workspace/file2.txt
flat: yes
実行結果
プレイブックの実行結果です。
Using /etc/ansible/ansible.cfg as config file
SSH password:
BECOME password[defaults to SSH password]:
PLAY [all] *********************************************************************
TASK [ファイルのダウンロード] *************************************************************
changed: [SYUTAKUWEB01] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/home/workspace/file2.txt", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "remote_md5sum": null}
PLAY RECAP *********************************************************************
SYUTAKUWEB01 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
コメント