【Ansible】windowsホストから指定のディレクトリ配下ファイルをfetch
はじめに
Ansibleでwindowsホストに対して、とあるディレクトリ配下のファイルをfetchしてくる処理を作りました。
fetchモジュールって、公式ドキュメントに、
This must be a file, not a directory.
とあるように、
このディレクトリ配下ぜ~んぶ持ってきてっていうのは無理なんですね。
そうやって意地悪するとこ、嫌いじゃないです。
ちょっとだけ工夫して実現したのでメモ残します。
環境
- Ansibleノード
- Redhat系7(詳しく見てない)
- Ansible2.4
- ターゲットノード
- Windows Server 2019
- Powershell 5.1(うろ覚え)
いざfetch
roleのtasksの中に書くっていう前提です。
C:¥Users¥Piyomaru¥hoge¥配下の
ファイルたちを取得したいイメージです。
- name: get filename win_find: paths: C:¥Users¥Piyomaru¥hoge¥ register: file_list - name: fetch files in directory fetch: src: C:¥Users¥Piyomaru¥hoge¥"{{ item.filemame }}" dest: ./output with_items: "{{ file_list.files }}"
一回file_listをdebugモジュールで、
dict型で出ることを確認しました。
filepathのキーでループ回してもよかったかと思います。
余談
この処理の実装に至った背景として、
実現しようとした全体の流れを書いておきます。
Powershellコマンドを叩いて、結果をファイルに出力するPowershellスクリプトを作成(叩くコマンドはファイルに別出しして、引数で指定)
1.のPowershellスクリプトをWindowsにコピー(win_copyモジュール)
スクリプトを実行し、ホスト名フォルダにファイルを出力させる(win_shellモジュール)
3.で出力させたファイルたちをfetchでAnsibleノードに持ってくる★この記事はこの部分!
なんか、こうして書くとレシピですね。
1. でレンチンしたジャガイモを鍋に投入!
みたいな。