はじめに
Ansible でよくある困りごとのひとつとして、タスクのログに複数行の文字列が含まれるとき、以下のように人間の眼にはやさしくない表示になることが挙げられます。改行がエスケープシーケンスとして表示されるためです。
...
TASK [Referring undefined variable] ********************************************
fatal: [localhost]: FAILED! => {"msg": "The task includes an option with an unde
fined variable. The error was: 'undefined_variable' is undefined. 'undefined_var
iable' is undefined\n\nThe error appears to be in '/runner/project/demo.yaml': l
ine 20, column 7, but may\nbe elsewhere in the file depending on the exact synta
x problem.\n\nThe offending line appears to be:\n\n\n - name: Referring undef
ined variable\n ^ here\n"}
...
この対策として、改行が改行として表示されるように 出力を YAML 形式にする 方法がよく知られています。本エントリ公開時点では、次の二つの方法が一般的です。
- Ansible の組み込みの機能を利用する(Ansible 2.13 以降のみ)
ansible.cfg の callback_result_format(または環境変数 ANSIBLE_CALLBACK_RESULT_FORMAT)に yaml を指定する
- コレクション
community.genral のコールバックプラグイン yaml を利用する
ansible.cfg の stdout_callback(または環境変数 ANSIBLE_STDOUT_CALLBACK)に community.general.yaml を指定する
一方で、同じ困りごとは AWX でも発生しますが、AWX で同じ対策を試みても意外と素直にいきません。
先日、これに関する質問が Ansible Community Forum に寄せられ ました。フォーラムでもぼくから回答済みですが、本エントリでは、AWX でジョブのログを YAML 形式で出力させる方法を改めて日本語で簡単に紹介します。
続きを読む