私が持っているPGBouncerためAnsibleプレイ統計から表示され、いくつかの出力がPGBouncerに組み込まれ、モジュールということを。
私の問題は、Ansibleが端末に出力を印刷すると、改行が破損することです。見る代わりに
----------
| OUTPUT |
----------
そうですか
----------\n| OUTPUT |\n----------
誰もが出力を「きれいに印刷」するためにAnsibleを取得する方法を知っていますか?
私が持っているPGBouncerためAnsibleプレイ統計から表示され、いくつかの出力がPGBouncerに組み込まれ、モジュールということを。
私の問題は、Ansibleが端末に出力を印刷すると、改行が破損することです。見る代わりに
----------
| OUTPUT |
----------
そうですか
----------\n| OUTPUT |\n----------
誰もが出力を「きれいに印刷」するためにAnsibleを取得する方法を知っていますか?
回答:
Ansibleでネイティブにやりたいことをする方法はありません。これを回避策として実行できます。
ansible-playbook ... | sed 's/\\n/\n/g'
\n
、結果に表示されるため、デバッグメッセージで次の正規表現を使用できますmsg: "{{ result.stdout | regex_replace('\\n', '\n') }}"
より人間に優しい出力が必要な場合は、以下を定義します。
ANSIBLE_STDOUT_CALLBACK=debug
これにより、不幸な名前は冗長ではなく、人間が読むのがはるかに簡単になりますが、デバッグ出力モジュール(以前の名前human_log
)を使用できるようになります。
このモジュールが利用できないというエラーを受け取った場合、Ansibleをアップグレードできないか、Ansibleをアップグレードできない場合はこのモジュールをローカルに追加すると、2.0などのansibleのバージョンまたは1.9でも動作します。
これを設定する別のオプションはstdout_callback = debug
、ansible.cfg に追加することです
ANSIBLE_STDOUT_CALLBACK=yaml
。fail
msg
オブジェクトを提供するときにフォーマットがいいので、それが好きです。
コールバックプラグインを使用できます。これにより出力が再解析され、簡単にオンとオフを切り替えることができます。
CallbackBase
させるfrom ansible.plugins.callback import CallbackBase
ためにimported with を継承する必要があります。
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') }}"
基本的にこれを改行で分割し、そのリストを印刷することでリストに変換します。
ignore_errors: yes
元のコマンドに追加し、後で `-assert:that:" test.rc == 0 "のようなものを追加できます。
一時停止モジュールを使用できます。
- pause:
prompt: "{{ variable_blob.stdout }}"
分または秒を定義することにより、入力なしで続行しますが、ユーザー入力はキャプチャされません。
クレジット:https : //github.com/ansible/ansible/issues/17446#issuecomment-245391682
sed -e 's/\\n/'$'\\\n/g'
。関連性:comicjk.com/20