■ はじめに
Ansible には多数のACIモジュールがあり、内部で APIC の REST API を叩く仕様です。
通常時はあまり意識する必要がないかも知れませんが、デバッグ時など細かい情報を知りたい場合「このタスクでどのような REST API の URL をリクエストしたのか」を知りたいことがあります。
リクエストした URL は以下の方法で確認できます。
- モジュールのオプションに
output_level: debug
を指定する - タスクの実行結果(戻り値)register 変数に格納する
- register 変数内の
url
とfilter
を確認する
なお、タスクの実行に失敗(failure)したときは、output_level: debug
の指定は不要です。
この記事では、正常時にもリクエストした URL を家訓する方法法を、簡単な例をもとに説明します。
■ サンプル Playbook
ここでは、 aci_bd モジュールを利用して、指定した Bridge Domain を query するタスクで試します。
--- - name: query hosts: apic gather_facts: False tasks: - name: query db aci_bd: host: "{{ ansible_host }}" username: "{{ username }}" password: "{{ password }}" validate_certs: False tenant: t_test9999 bd: bd_test9999 state: query output_level: debug # point! register: result - name: debug debug: var: result
■ 実行結果
$ ansible-playbook -i inventory.ini aci_test.yml PLAY [query] ************************************************************************************************************** TASK [query db] *********************************************************************************************************** ok: [apic01] ...(略)... TASK [debug] ************************************************************************************************************** ok: [apic01] => { "result": { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "current": [ { "fvBD": { "attributes": { "OptimizeWanBandwidth": "no", "annotation": "", "arpFlood": "yes", "bcastP": "225.1.31.64", "childAction": "", "configIssues": "", "descr": "", "dn": "uni/tn-t_test9999/BD-bd_test9999", ...(略)... ], "failed": false, "filter_string": "?rsp-subtree-class=fvRsBdToEpRet,fvRsCtx,fvRsIgmpsn,fvRsBDToNdP&rsp-subtree=full", "method": "GET", "proposed": {}, "response": "OK (2639 bytes)", "sent": {}, "status": 200, "url": "https://apic01.example.com/api/mo/uni/tn-t_test9999/BD-bd_test9999.json", ...(略)...
上記結果の url
と filter_string
の値から、今回リクエストした URL は以下であることが分かります。
たとえば、このタスクの挙動を再現する場合は、上記URLをGET(state: query
なので)して確認します。別途、認証済み cookie が必要です。
(ちなみに、ACI の各モジュールのドキュメントの Return Values には、 filter_string
failure or debug
とありますが、debug
のことを 当初 ansible-plyabook
コマンドの -v
オプションのことかと勘違いしておりました・・)
■ まとめ
ACI モジュールでリクエストしたURLを知るには、output_level: debug
を指定して、タスク実行結果内の url
と filter
を参照する、ということをご紹介しました。