NSX-T を REST API で操作してみます。
今回は、Tier-1 論理ルータの作成です。
一連の投稿の前提/想定環境などは下記をどうぞ。
NSX-T 2.4 を REST API で操作してみる。Part.1
以前に投稿した下記の、API 操作版です。
自宅ラボで NSX-T 2.4 環境を構築する。Part.9
Tier-1 論理ルータの作成。
まず、Tier-1 論理ルータを作成するために、JSON ファイルを用意します。
その前提として、Tier-1 論理ルータを接続する NSX Edge クラスタ の ID を取得する必要があります。
オブジェクトの ID については、殆どのものが NSX Manager の Web UI からでも確認できます。
しかし、今回はあえて ID も API で取得してみます。
Edge クラスタ「edge-cluster-01」の ID を取得してみます。
なお、この Edge クラスタは、前提として作成ずみのものです。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/edge-clusters | jq -r '.results[] | select(.display_name == "edge-cluster-01") | .id'
7228228c-6d93-46be-bb7a-f5e367cf1390
ここで用意する JSON ファイルは、下記のような内容です。
赤字の部分は、環境固有の値となります。
※これ以降の JSON も含め、わかりやすいサンプルにするため、あえてオプション指定を少なくしています。
{
"display_name": "Tier-1 論理ルータの名前",
"router_type": "TIER1",
"edge_cluster_id": "Edge クラスタ ID",
"edge_cluster_member_indices": [
0
],
"high_availability_mode": "ACTIVE_STANDBY"
}
display_name と edge_cluster_id に、具体的な値を指定した JSON を作成しました。
t1-router-001.json
{
"display_name": "t1-router-001",
"router_type": "TIER1",
"edge_cluster_id": "7228228c-6d93-46be-bb7a-f5e367cf1390",
"edge_cluster_member_indices": [
0
],
"high_availability_mode": "ACTIVE_STANDBY"
}
それでは、論理ルータを作成します。
作成と同時に、レスポンス情報から作成された論理ルータの ID を取得しておきます。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t1-router-001.json https://$MGR/api/v1/logical-routers | jq -r '.id'
b8c1e482-a6d0-47eb-aca3-315abf738c8f
作成ずみの論理ルータの ID は、下記のように取得することもできます。
$ 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
Tier-0 論理ルータとの接続。
Tier-1 論理ルータを Tier-0 論理ルータを接続(リンク)させるために、
それぞれの論理ルータにポートを作成する必要があります。
Tier-0 論理ルータ側のルータ ポート作成。
まず、Tier-0 論理ルータ側でポートを作成します。
このとき、Tier-0 論理ルータのルータ ID が必要になります。
ここで指定する Tier-0 論理ルータ「t0-router-01」は、前提として作成ずみのものです。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers | jq -r '.results[] | select(.display_name == "t0-router-01") | .id'
64f51cf0-bdf8-49d2-8a51-309b97b6ab40
オーバーレイ論理スイッチの論理ルータ ポート作成とは異なり、
resource_type には「LogicalRouterLinkPortOnTIER0」を指定します。
t1-router-001_t0-link-port.json
{
"display_name": "作成する Tier-0 論理ルータ側のポート名",
"resource_type": "LogicalRouterLinkPortOnTIER0",
"logical_router_id": "Tier-0 論理ルータの ID"
}
それでは、ポートを作成します。
作成と同時に、レスポンス情報から作成されたポートの ID を取得しておきます。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t1-router-001_t0-link-port.json https://$MGR/api/v1/logical-router-ports | jq -r '.id'
Tier-1 論理ルータ側のルータポート作成。
Tier-0 論理ルータ側のポートを作成した後に、Tier-1 論理ルータ側でポートを作成します。
こちらでは、下記のような指定をします。
- logical_router_id には、この投稿の最初に作成した Tier-1 論理ルータのルータ ID を指定します。
- resource_type では「LogicalRouterLinkPortOnTIER1」を指定します。
- linked_logical_router_port_id では、ひとつ前の手順で作成した Tier-0 論理ルータのポート ID を指定します。
t1-router-001_t1-link-port.json
{
"display_name": "作成する Tier-1 論理ルータ側のポート名",
"resource_type": "LogicalRouterLinkPortOnTIER1",
"logical_router_id": "Tier-1 論理ルータの ID",
"edge_cluster_member_index": [
0
],
"linked_logical_router_port_id": {
"target_id": "Tier-0 論理ルータ ポートの ID",
"target_type": "LogicalRouterLinkPortOnTIER0",
"is_valid": true
}
}
作成した JSON ファイルで、論理ルータ ポートを作成します。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t1-router-001_t1-link-port.json https://$MGR/api/v1/logical-router-ports
これで、Tier-1 論理ルータが作成され、Tier-0 論理ルータと接続された状態になりました。
NSX Manager の Web UI でも、Tier-0 ルータが接続されたことが確認できます。
つづく。