今回は、NSX-T の REST API でオブジェクトを削除していきます。
これまでの投稿で、NSX-T のネットワークを REST API で作成してみました。
NSX-T 2.4 を REST API で操作してみる。Part.1
このラボ環境の概要は下記をどうぞ。
今回の削除対象も下記イメージ図の赤枠の部分です。
基本的に、これまで API で作成したオブジェクトを、作成時とは逆順に削除することになります。
削除対象オブジェクトの ID 確認。
API によるオブジェクトの削除では、オブジェクトの ID(UUID)を指定します。
そこで、おもな削除対象オブジェクトの ID を先に確認しておきます。
API の利用には、これまでの投稿と同様に curl / jq コマンドを利用しています。
変数「$CRED」では「ユーザ名:パスワード」、変数 $MGR には NSX Manager のアドレスを格納しています。
論理ルータ「t1-router-001」の UUID を取得します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers | jq -r '.results[] | select(.display_name == "t1-router-001") | .id'
b8c1e482-a6d0-47eb-aca3-315abf738c8f
論理スイッチ「ls-nsxt-001」の UUID を取得します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-switches | jq -r '.results[] | select(.display_name=="ls-nsxt-001") | .id'
639efb66-79aa-41f2-8c34-a32d4d74a8d5
DHCP サービスの削除。
DHCP サーバと論理スイッチを切断。
論理スイッチから、attachment_type が「DHCP_SERVICE」になっている論理ポートを確認します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-ports?logical_switch_id=639efb66-79aa-41f2-8c34-a32d4d74a8d5 | jq -r '.results[] | select(.attachment.attachment_type=="DHCP_SERVICE") | .id'
f5cd00bd-143c-4506-950c-9b43112d233a
論理スイッチから、論理ポートを削除します。
DHCP サーバを接続している論理ポートなので、一般的な論理ポート削除とは異なり「detach=true」を指定します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-ports/f5cd00bd-143c-4506-950c-9b43112d233a?detach=true
DHCP サーバの削除。
DHCP サーバ「dhcp-sv-001」の ID を確認します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/dhcp/servers | jq -r '.results[] | select(.display_name=="dhcp-sv-001") | .id'
63ad4619-3749-438e-83e9-90265604174c
DHCP サーバを削除します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/dhcp/servers/63ad4619-3749-438e-83e9-90265604174c
DHCP サーバ プロファイルの削除。
DHCP サーバ プロファイル「dhcp-prof-001」の ID を確認します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/dhcp/server-profiles | jq -r '.results[] | select(.display_name=="dhcp-prof-001") | .id'
488512e2-d953-42ea-95c4-affe4b1dc063
DHCP サーバ プロファイルを削除します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/dhcp/server-profiles/488512e2-d953-42ea-95c4-affe4b1dc063
オーバーレイ論理スイッチの削除。
論理スイッチを削除します。論理スイッチ ID は、冒頭で確認したものを指定します。
「cascade=true」で、論理スイッチに作成されている論理ポートを一緒に削除します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-switches/639efb66-79aa-41f2-8c34-a32d4d74a8d5?cascade=true
Tier-1 論理ルータの削除。
Tier-1 論理ルータは、論理ルータ ポートが残っていると削除することができません。
そこで、対象の論理ルータにポートが残っていないか確認してみます。
logical_router_id を指定することで、特定の論理ルータに作成されているポートを取得することができます。
論理ルータの ID は、冒頭で確認したものを指定しています。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-router-ports?logical_router_id=b8c1e482-a6d0-47eb-aca3-315abf738c8f | jq -r '.results[] | {display_name:.display_name, resource_type:.resource_type, logical_router_port_id:.id}'
{
"display_name": "LinkedPort_t1-router-001",
"resource_type": "LogicalRouterLinkPortOnTIER1",
"logical_router_port_id": "d580e2fb-4c10-41ff-ae1d-af2d9bc5659d"
}
{
"display_name": "t1-port-001",
"resource_type": "LogicalRouterDownLinkPort",
"logical_router_port_id": "2b708512-2fab-4fd2-bc83-4ed01d0569e9"
}
上記のように、ルータ ポートが残っている場合は、それぞれ削除しておきます。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-router-ports/d580e2fb-4c10-41ff-ae1d-af2d9bc5659d
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-router-ports/2b708512-2fab-4fd2-bc83-4ed01d0569e9
下記のように、論理ルータ ポートがゼロになっていることを確認することもできます。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-router-ports?logical_router_id=b8c1e482-a6d0-47eb-aca3-315abf738c8f | jq -r '.result_count'
0
論理ルータを削除します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-routers/b8c1e482-a6d0-47eb-aca3-315abf738c8f
Tier-0 ルータ側の論理ルータ ポートの削除。
Tier-1 論理ルータと Tier-0 論理ルータのリンクの、Tier-0 論理ルータ側の論理ポート
(resource_type は LogicalRouterLinkPortOnTIER0)も削除しておきます。
複数の Tier-1 論理ルータ ポートを作成している場合は、Tier-1 論理ルータ側のポートを削除する前に
対向のポート ID を確認しておくとよいと思います。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-router-ports | jq -r '.results[] | select (.resource_type=="LogicalRouterLinkPortOnTIER0") | {display_name:.display_name, logical_router_id:.logical_router_id, logical_router_port_id:.id}'
{
"display_name": "LinkedPort_t1-router-001",
"logical_router_id": "64f51cf0-bdf8-49d2-8a51-309b97b6ab40",
"logical_router_port_id": "722849ae-a48a-4684-99e1-d7e06dcc0a23"
}
論理ルータ ポートを削除します。
$ curl -ks -u $CRED -X DELETE https://$MGR/api/v1/logical-routers/722849ae-a48a-4684-99e1-d7e06dcc0a23
API の動作確認やツール開発では、何度も環境を初期化する需要があるはずなので、
このような DELETE メソッドによるオブジェクト削除の自動化ができるようにしておくと便利かなと思います。
以上、NSX-T の REST API でひたすらオブジェクト作成する話でした。