
はじめに
先日、community.general.yaml コールバックプラグイン を使って、Playbook の実行結果を改行付きで表示させる方法を投稿しました。
[Ansible] Playbookの実行結果(エラー含む)を改行付きで表示する(community.general.yaml コールバックプラグイン編) - てくなべ (tekunabe)
ふと、デフォルトの ansible.builtin.default コールバックプラグイン でも似たようなことができる事に気が付きました。
ansible-core 2.13 からの機能で、 pretty_results や、result_format というオプションを利用します。
前回と同じ Playbook で試してみます。
- 環境
- ansible-core 2.14.4
おためし1: JSON のまま改行付きで表示
設定
ansible.cfg で以下の設定をします。
[defaults] callback_format_pretty = true
環境変数で指定する場合は ANSIBLE_CALLBACK_FORMAT_PRETTY です。
実行
Playbook の実行結果は以下の通りです。-vvv を付けなくても、JSON のまま改行付きで表示されました。
$ ansible-playbook -i inventory.ini test.yml
PLAY [Request] **********************************************************************************************************
TASK [Invalid request] **************************************************************************************************
fatal: [rock01]: FAILED! => {
"changed": false,
"elapsed": 10,
"msg": "Status code was -1 and not [200]: Request failed: <urlopen error [Errno -3] Temporary failure in name resolution>",
"redirected": false,
"status": -1,
"url": "https://ugui.local/dummy.json"
}
PLAY RECAP **************************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
おためし2: YAMLで改行付きで表示
設定
ansible.cfg で以下の設定をします。
[defaults] callback_format_pretty = false callback_result_format = yaml
フォーマットの指定を環境変数で指定する場合は ANSIBLE_CALLBACK_RESULT_FORMAT です。
なお、フォーマットをYAMLに指定した場合は、callback_format_pretty のデフォルトが true になるとのことです。この場合、読みやすさ優先になって、正確性に欠けることがあるようなので false にします。(詳細はドキュメントを参照)
実行
...(略)...
TASK [Invalid request] ********************************************************************************************************************
fatal: [rock01]: FAILED! =>
changed: false
elapsed: 10
msg: 'Status code was -1 and not [200]: Request failed: <urlopen error [Errno -3]
Temporary failure in name resolution>'
redirected: false
status: -1
url: https://ugui.local/dummy.json
...(略)...
今回の場合に限れば、callback_format_pretty は false でも true でも変わりませんでした。
おわりに
community.general コレクションを利用できない環境でも改行付きで表示したい場合は、有力な設定方法な気がします。
別のコールバックプラグインを使わなくてもいいなら、改行付き JSON 表示くらいがちょうどいいかなと思い始めました。
ansible.cfg 再掲:
[defaults] callback_format_pretty = true
Playbook 実行時に -v の付け方によっては改行付き JSON で表示されますが、v を増やすとどうしても情報量が増えてしまいます。デバッグほどの情報は不要だけど、JSON は改行されててほしい、というときには便利そうです。