stdout_callbackを設定して、ansible-playbookの実行結果を変更します。
ここでは、JSON形式で出力してみます。
環境
# cat /etc/centos-release CentOS Linux release 7.3.1611 (Core) # ansible --version ansible 2.2.1.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides
ansible.cfg の設定
[defaults] stdout_callback = json retry_files_enabled = false
stdout_callback = json とすることで、callback プラグインである ansible/plugins/callback/json.py を利用します。
retry_files_enabled = false は以下のエラーを出力させないために設定しています。
to retry, use: --limit @/path/to/sample.retry
ansible.cfg の読み込み順序
以下の順番で設定が読み込まれます。最初に存在する設定が有効で、以降の設定ファイルは無視されます。
- ANSIBLE_CONFIG(環境変数) で指定
- ./ansible.cfg
- ~/ansible.cfg
- /etc/ansible/ansible.cfg
JSON Output
playbook
- hosts: all
gather_facts: no
tasks:
- ping:
ansible-playbook 実行例
# ANSIBLE_CONFIG=/path/to/sample.cfg \
ansible-playbook -i localhost, -c local sample.yml
{
"plays": [
{
"play": {
"id": "c241782a-b82e-4947-8c54-2d868aa1e017",
"name": "all"
},
"tasks": [
{
"hosts": {
"localhost": {
"_ansible_no_log": false,
"_ansible_parsed": true,
"changed": false,
"invocation": {
"module_args": {
"data": null
},
"module_name": "ping"
},
"ping": "pong"
}
},
"task": {
"id": "cb8138b1-4c33-49f4-bedb-a2b5e96076cd",
"name": ""
}
}
]
}
],
"stats": {
"localhost": {
"changed": 0,
"failures": 0,
"ok": 1,
"skipped": 0,
"unreachable": 0
}
}
}
jqコマンドを利用して実行結果のサマリを抽出してみる
playbook
- hosts: all gather_facts: no tasks: - ping: - fail: msg="failed"
ansible-playbook 実行例
# ANSIBLE_CONFIG=/path/to/sample.cfg \
ansible-playbook -i localhost, -c local sample.yml \
| jq ".stats"
{
"localhost": {
"changed": 0,
"failures": 1,
"ok": 1,
"skipped": 0,
"unreachable": 0
}
}
ansible.cfg の無効化
一時的にansible.cfgを無効にしたい場合は、ANSIBLE_CONFIG=/dev/null の様に指定して実行することでカレントディレクトリや${HOME}の設定ファイルが無視されます。
この時、存在しないファイルを指定すると、その指定自体が無効になります。