はじめに
本ドキュメントでは、ACI における設定差分の確認方法の1つについて解説します。
ACI の設定は Object model で管理されており、Config backup/snapshot は JSON または XML 形式で export されます。その中身の各 Object は順不同のため、設定変更前と後の JSON/XML file をそのまま比較することが難しいです。
しかし、APIC GUI に用意されている Config Rollbacks の機能を用いることで比較的容易に設定差分が確認できます。
このドキュメントは、APIC version 6.0(2h) での検証結果をもとにしています。
設定差分の確認 (GUI から)
まず、Config Rollbacks の機能を用いて設定差分を確認するためには、設定前と後の config backup file が snapshot として APIC に保存されている必要があります。APIC GUI の Admin -> Config Rollbacks にて、設定変更前後の snapshot があることを確認してください。
Snapshot については Cisco APIC Basic Configuration Guide の Chapter: Management の Snapshot セクションなどをご参照ください。
設定変更差分を見たい場合、まず Config Rollbacks 画面の snapshot 一覧から、以下のように設定変更後の snapshot を選択します (この例では最下部の ce2_defaultOneTime-2023-07-25T15-36-35.tar.gz を選択)。

その後、画面右側の Compare with previous snapshot から設定変更前の snapshot を選択します (この例ではプルダウン内の最下部の ce2_DailyAutoBackup-2023-07-25T09-00-23.tar.gz を選択)。

すると calculating ... と出力された後、以下のように設定差分情報が XML 形式で表示されます。赤い部分は設定変更によって削除された箇所を、緑の部分は追加された箇所を示しています。
以下の例では、test という名前の Tenant が設定変更によって削除されたことを示しています。

以下の部分は、defaultOneTime という名前の config export policy (configExportP) および test2 という名前の Tenant (fvTenant)が追加されたことを示しています。
右下の Undo these changes ボタンを押すことでこの設定変更を元に戻すことも可能です。
APIC GUI 上での Config Rollbacks 機能を利用した設定変更差分の確認方法は以上です。
設定差分の確認 (API から)
次に、API を利用して2つの snapshot の差分を確認する方法を解説します。
上記に記載した Cisco APIC Basic Configuration Guide の Chapter: Management には以下のような記載があります。
-----
Diff Tool
Another special REST API is available, which provides diff functionality between two snapshots: apichost/mqapi2/snapshots.diff.xml?s1dn=SNAPSHOT_ONE_DN&s2dn=SNAPSHOT_TWO_DN.
-----
こちらが今回利用する API ですが、その中に s1dn と s2dn というパラメータがあり、2つの snapshot の DN を指定する必要があります。snapshot の DN は以下のように class configSnapshot を moquery することで得られます。
fab5-apic1# moquery -c configSnapshot | egrep "^$|#|dn|fileName" | tail -8
# config.Snapshot
dn : uni/backupst/snapshots-[uni/fabric/configexp-DailyAutoBackup]/snapshot-run-2023-07-25T09-00-23
fileName : ce2_DailyAutoBackup-2023-07-25T09-00-23.tar.gz
# config.Snapshot
dn : uni/backupst/snapshots-[uni/fabric/configexp-defaultOneTime]/snapshot-run-2023-07-25T15-36-35
fileName : ce2_defaultOneTime-2023-07-25T15-36-35.tar.gz
1つ目の dn が設定変更前の snapshot の DN (s1dn)、2つ目が変更後の snapshot の DN (s2dn) です。
必要情報が出揃ったら、Postman などの API tool を開き、まずは対象 APIC にログインします。
ご不明な場合は以下をご参照ください。
Cisco ACI : ACI における REST API 利用のためのログイン認証
ログイン後、以下の形式の URL を指定した GET request を用意します。
<APIC IP> には対象 APIC の management IP address を、<s1dn> および <s2dn> には上記で得た snapshot の DN をそれぞれ代入します。
https://<APIC IP>/mqapi2/snapshots.diff.xml?s1dn=<s1dn>&s2dn=<s2dn>
今回の例では以下のような URL になります。
https://f5a1/mqapi2/snapshots.diff.xml?s1dn=uni/backupst/snapshots-[uni/fabric/configexp-DailyAutoBackup]/snapshot-run-2023-07-25T09-00-23&s2dn=uni/backupst/snapshots-[uni/fabric/configexp-defaultOneTime]/snapshot-run-2023-07-25T15-36-35
実際に Postman で GET した結果の出力は以下の通りです。
API の場合、設定変更によって削除された Object には status="deleted" という property が、追加された Object には status="created" という property が含まれます。上記の APIC GUI での確認と同様、test という Tenant が削除されて、test2 という Tenant が追加されていることがわかります。

API を用いた設定変更差分の確認方法は以上です。
参考情報