Ansibleで出力を表示する


39

私が持っているPGBouncerためAnsibleプレイ統計から表示され、いくつかの出力がPGBouncerに組み込まれ、モジュールということを。

私の問題は、Ansibleが端末に出力を印刷すると、改行が破損することです。見る代わりに

----------
| OUTPUT |
----------

そうですか

----------\n| OUTPUT |\n----------

誰もが出力を「きれいに印刷」するためにAnsibleを取得する方法を知っていますか?

回答:


14

Ansibleでネイティブにやりたいことをする方法はありません。これを回避策として実行できます。

ansible-playbook ... | sed 's/\\n/\n/g'

1
OSXでは、を使用する必要がありましたsed -e 's/\\n/'$'\\\n/g'。関連性:comicjk.com/20
Navin

4
sorins解答参照serverfault.com/a/846232/240508正しい2017年1およびansible> 2.3である
Vadimo

ほとんどの場合\n、結果に表示されるため、デバッグメッセージで次の正規表現を使用できますmsg: "{{ result.stdout | regex_replace('\\n', '\n') }}"
。– klml

残念ながら、これを行うと、アンシブル出力で得られる素敵で便利なカラーリングが削除されます
Mehdi LAMRANI

62

より人間に優しい出力が必要な場合は、以下を定義します。

ANSIBLE_STDOUT_CALLBACK=debug

これにより、不幸な名前は冗長ではなく、人間が読むのがはるかに簡単になりますが、デバッグ出力モジュール(以前の名前human_log)を使用できるようになります。

このモジュールが利用できないというエラーを受け取った場合、Ansibleをアップグレードできないか、Ansibleをアップグレードできない場合はこのモジュールをローカルに追加すると、2.0などのansibleのバージョンまたは1.9でも動作します。

これを設定する別のオプションはstdout_callback = debug、ansible.cfg に追加することです


13
これは2017年に受け入れられた回答であるはずです。人間に優しいログ出力はそのまま出荷されます。
ヴァディモ

1
これは、より恒久的なものにするここではいくつかのより多くのヒント:github.com/ansible/ansible/issues/27078#issuecomment-364560173
kramer65

1
またはANSIBLE_STDOUT_CALLBACK=yamlfail msgオブジェクトを提供するときにフォーマットがいいので、それが好きです。
マリノス

13

コールバックプラグインを使用できます。これにより出力が再解析され、簡単にオンとオフを切り替えることができます。


2
注:ansible 2.0.x では、コールバッククラスを機能CallbackBaseさせるfrom ansible.plugins.callback import CallbackBaseためにimported with を継承する必要があります。
アロ

12

Ansible Projectグループフォーラムでこの方法を見つけました。

- name: "Example test"
  command:
    ...
  register: test
- name: "Example test stdout"
  debug:
    msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
  debug:
    msg: "{{ test.stderr.split('\n') }}"

基本的にこれを改行で分割し、そのリストを印刷することでリストに変換します。


これにより、シェル出力がより読みやすくなります!いいね!
Asfand Qazi

このソリューションには1つの大きな欠点があるようです。「サンプルテスト」モジュールの実行が失敗すると、通常、プレイブックのビルド全体が失敗し、特に最も興味深いstderrのフォーマット出力は表示されません。
ルネ

@Renéあなたは正しい。そのために、ignore_errors: yes元のコマンドに追加し、後で `-assert:that:" test.rc == 0 "のようなものを追加できます。
-jhutar


0

実際に標準出力を模倣する形式で表示したい場合は、次のようにAnsible 2.7+ debugdebugモジュールでコールバックプラグインを使用できます。

- name: "Test Output"
  debug:
    msg: "{{ test_result.stdout_lines | join('\n') }}"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.