Ansibleの利用にあたり便利なansible-playbook-debuggerが
Ansible2.0に対応していましたのでご紹介です!
GitHub:ansible-playbook-debugger
できること
plyabook内でタスクが失敗した時に、モジュールの引数や変数などを確認できます。また、デバッガ内でモジュールの引数を変更して、失敗したタスクの再実行ができます。
注意点
このデバッガーはAnsibleのバージョン1系には対応していません。
導入方法
ダウンロード
playbookが存在するディレクトリにて以下を実施します。
mkdir strategy_plugins
cd strategy_plugins
wget https://raw.githubusercontent.com/ks888/ansible-playbook-debugger/master/strategy_plugins/debug.py
playbookの編集
playbook.yml
- hosts: all
strategy: debug #追加
tasks:
使い方
通常通りansible-playbook
コマンドを発行します。
そしてtaskが失敗すると以下のようになります。
TASK [shared_usage/roles/os : ネットワーク設定] ****************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ImportError: No module named gi.repository
failed: [xxxxx] => (item={u'conn_name': u'eth0', u'ifname': u'eth0', u'type': u'ethernet', u'ip4': u'xx.xx.xx.xx/24', u'gw4': u'xx.xx.xx.xx'}) => {"failed": true, "item": {"conn_name": "eth0", "gw4": "xx.xx.xx.xx", "ifname": "eth0", "ip4": "xx.xx.xx.xx/24", "type": "ethernet"}, "parsed": false}
Debugger invoked
(debug)
(debug)
が表示されたらデバッグモードに入ったことになります。
デバッグモードでできること
コマンド | 出力結果 |
---|---|
p task | 失敗したタスクの表示 |
p task.args | タスク内で指定された引数(copyモジュールにおけるsrc/destなど)を表示します) |
p vars | 変数の一覧を表示します(gather_factsがTrueの場合は収拾した変数も表示します) |
p host | 対象のホスト名を指定します(inventory内の設定) |
p result | タスクの実行結果を表示します |
task.args[key] = value | モジュールの引数keyをvalueで更新します |
vars[key] = value | 変数keyをvalueで更新します |
redo/r | 失敗したタスクを再実行します |
continue/c | Playbookの実行を継続します |
quit/q | デバッグモードを終了します(Playbookの実行は中止されます) |