Playbook Debugger
Ansible には、Playbook 実行時に変数値の確認や、オプション値の変更ができる Playbook Debugger という機能があります。
デバッガーの起動条件
Ansible 2.5 以降では、debugger
キーワードで、デバッガーの起動条件を指定できます。
たとえば、debugger: always
と指定すると、常にデバッガーを起動します。
- hosts: junos gather_facts: no debugger: always # point tasks: - name: task1 debug: msg: "msg of task1" - name: task2 debug: msg: "msg of task2" - name: task3 debug: msg: "msg of task3"
この場合、最初のタスクからデバッガーが起動します。
特定のタスクだけ起動した場合はタスクに debugger を指定
それでは、途中のタスクからデバッガーを起動したい場合はどのようにすればよいでしょうか。
実は(?)、公式ドキュメントにも記載がありますが、debugger
キーワードは、タスクごとにも指定できます。そのため、以下のように、task2 に debugger: always
を指定すると、task2 だけデバッガーが起動します。
- hosts: junos gather_facts: no tasks: - name: task1 debug: msg: "msg of task1" - name: task2 debug: msg: "msg of task2" debugger: always # point - name: task3 debug: msg: "msg of task3"
- 実行例
$ ansible-playbook -i inventory test_debugger.yml PLAY [junos] *************************************************************** TASK [task1] *************************************************************** ok: [vsrx1] => { "msg": "msg of task1" # 通常どおり実行 } TASK [task2] *************************************************************** ok: [vsrx1] => { "msg": "msg of task2" # ↓ デバッガーが起動 } [vsrx1] TASK: task2 (debug)> task.args['msg']='Hello, task2.' # msg オプションの変更 [vsrx1] TASK: task2 (debug)> redo # task2 再実行 ok: [vsrx1] => { "msg": "Hello, task2." # 変更した msg オプションの表示になった } [vsrx1] TASK: task2 (debug)> c # 処理を継続 TASK [task3] *************************************************************** ok: [vsrx1] => { "msg": "msg of task3" # 通常どおり実行(以降、デバッガーは起動しない) } PLAY RECAP ***************************************************************** vsrx1 : ok=3 changed=0 unreachable=0 failed=0