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}の設定ファイルが無視されます。
この時、存在しないファイルを指定すると、その指定自体が無効になります。