PGBouncerに組み込まれている統計モジュールからの出力を表示する PGBouncerのAnsible play があります。
私の問題は、Ansibleが出力をターミナルに出力するときに改行を壊すことです。見る代わりに
----------
| OUTPUT |
----------
そうですか
----------\n| OUTPUT |\n----------
誰かがAnsibleに出力を「きれいに印刷」する方法を知っていますか?
Ansibleでネイティブにやりたいことを行う方法はありません。これを回避策として行うことができます。
ansible-playbook ... | sed 's/\\n/\n/g'
より人間に優しい出力が必要な場合は、次のように定義します。
ANSIBLE_STDOUT_CALLBACK=debug
これにより、デバッグ出力モジュール(以前の名前はhuman_log
)が使用できなくなります不幸な名前にもかかわらずは冗長ではなく、人間が読むのがはるかに簡単です。
このモジュールが利用できないというエラーが発生した場合、Ansibleをアップグレードするか、このモジュールをローカルに追加して、ansibleをアップグレードできない場合、2.0などのバージョンのansibleまたはおそらく1.9でも動作します。
これを設定する別のオプションは、stdout_callback = debug
をansible.cfgに追加することです
コールバックプラグインを使用できます 。これにより出力が再解析され、簡単にオンとオフを切り替えることができます。
Ansible Projectグループフォーラムで this が見つかりました:
- 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') }}"
これを基本的にリストに変換するには、改行で分割し、そのリストを印刷します。
並列ホストで実行していない場合は、 pause モジュールを使用できます。
- pause:
Prompt: "{{ variable_blob.stdout }}"
minutesまたはsecondsを定義して、入力なしで次に進みますが、ユーザー入力はキャプチャされていません。
クレジット: https://github.com/ansible/ansible/issues/17446#issuecomment-245391682
注:並列ホストでは、最初のホストからの出力のみが表示されます
実際に標準出力を模倣する形式で表示したい場合は、次のようにdebug
コールバックプラグインをdebug
モジュールとともにAnsible 2.7以降で使用できます。
- name: "Test Output"
debug:
msg: "{{ test_result.stdout_lines | join('\n') }}"