はじめに
先日、community.general.yaml
コールバックプラグイン を使って、Playbook の実行結果を改行付きで表示させる方法を投稿しました。
ふと、デフォルトの 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 は改行されててほしい、というときには便利そうです。