1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AnsibleAdvent Calendar 2016

Day 17

ファイル取得と、コマンド実行出力後のファイル取得のロール

Last updated at Posted at 2016-12-17

簡単に使えるファイル取得と、コマンド実行出力後のファイル取得のロールを作りました。

Linux/Windows で対応できるようにしています。それぞれAnsible Galaxyにあげています。

これらをラップするように、対話形式で出来るよう下記のPlaybookを作りました。(少し作り切れていないところがありますが)

少し手を加えているところは、setupで取ってくるところの情報をJSONなので、使えそうなのをCSVで落としてくるところです。ここはしょぼいPythonスクリプトをツールとして呼び出して使っています。

苦労したところ

各ロールは、なるべく事前に準備するものを最小限の手間で行うことを前提に作ったところです。最悪ターゲットとして使うユーザの想定として「Ansible触ったことがない人」も入れています。

fetch-filesはシンプルすぎるほどなのでいいとして、fetch-command-out,fetch-wcommand-outは取得元となるINPUTのCSVファイルからリストを得て回すところ(以下参照)です。当然コードを書く際もできるだけ短くしたいという思いもあり、今回使った手は、lookup による列の抽出と with_lines によるループです。このあたりはこれがベストともまだ思っていないので、よりシンプルに楽な方法があれば、コメントいただけると幸いだったりします。

ユーザが用意するファイル

csv
1,<command>,<output file>
2,<command>,<output file>
3,<command>,<output file>
fetch-ommand-out/tasks/main.ymlより
    - include: run_out_fetch.yml
      vars:
        command: "{{ lookup('csvfile', '{{ item }} file={{ inputcommand }} delimiter=, col=1') }}"
        savefile: "{{ remtemp }}/{{ lookup('csvfile', '{{ item }} file={{ inputcommand }} delimiter=, col=2') }}"
      with_lines:
        - awk -F, '{ print $1 }' "{{ inputcommand }}"
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?