2016-08-19 16 views
2

私は愚かなプレイブックを持っています。ちょうどコマンドを実行して、Webサーバーグループのすべてのホストの仮想ホストのリストを取得します。すべての仮想ホストは/ var/wwwにあり、Webのリストを簡単に入手できます。Linuxツールでの出力の解析

問題は、Anativesが情報を返す方法です。例:

ok: [host1] => { 
    "var": { 
     "out.stdout_lines": [ 
      "", 
      "host1.com" 
     ] 
    } 
} 
ok: [host2] => { 
    "var": { 
     "out.stdout_lines": [ 
      "", 
      "host2.com" 
     ] 
    } 
} 

迷惑メールの名前を取得する簡単な方法は分かりますか? grep awkなどを使っていますか?

答えて

5

汚い方法:場合は、リストを持っているので、印刷前に、いくつかのマーカー(例えばANSBLMRK_)でstdout_lines内の各行の先頭に追加「ANSBLMRK_host2.com」、そしてgrepcut

いいえ:ANSIBLE_STDOUT_CALLBACK=jsonを設定し、それをjqにパイプします。

+0

こんにちはコンスタンチン、このANSIBLE_STDOUT_CALLBACKは、プラグインのいくつかの並べ替えですか? – Rubendob

+0

はい、プラグインで出力をカスタマイズできます。 'json'はすべてのプレイブックの出力をJSONオブジェクトに出力する標準的なものなので、' jq'のような他のツールで簡単に解析できます。 –

0

多分ちょうどあなたの脚本にホスト名を含むファイルを作成し、その後に使用します。

tasks: 

- name: make output file 
    file: name=./list_of_hosts state=touch 

- name: show my hostname 
    lineinfile: dest=./list_of_hosts line="{{ item }}" 
    with_items: 
    "{{ out.stdout_lines[1] }}" 
関連する問題