NSX-T を REST API で操作してみます。
今回はオーバーレイ ネットワークの作成として、
論理スイッチと、ゲートウェイになる Tier-1 論理ルータ ポートを作成します。
一連の投稿の前提/想定環境などは下記をどうぞ。
NSX-T 2.4 を REST API で操作してみる。Part.1
前回はこちら。
NSX-T 2.4 を REST API で操作してみる。Part.2
前提とする設計について。
サンプルをシンプルにするため、オブジェクト名やアドレスの規則を決めておきます。
「テナント番号」のような感じで、オーバーレイ ネットワーク番号(N)をもうけて、
それをオブジェクト名やアドレスに使用します。
これ以降の例では、下記のようにオブジェクト名/アドレスを採番しています。
- オブジェクト名: ~-N(例: ls-nsxt-001)
- ネットワークアドレス: 172.16.N.0/24(例: 172.16.1.0/24)
- デフォルトゲートウェイ: 172.16.N.1(例: 172.16.1.1)
オーバーレイ 論理スイッチの作成。
論理スイッチを作成するための JSON ファイルを作成します。
オーバーレイ論理スイッチの作成には、オーバーレイ トランスポート ゾーンの ID が必要です。
※ここで指定するオーバーレイ トランスポート ゾーン「tz-overlay-01」は、前提として作成ずみのものです。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/transport-zones | jq -r '.results[] | select(.transport_type=="OVERLAY" and .display_name=="tz-overlay-01") | .id'
4a51e97d-f991-407c-ab73-66820a117f70
JSON を作成します。赤字の部分は環境にあわせた値にします。
オーバーレイ トランスポート ゾーン ID は、この環境であれば、
「4a51e97d-f991-407c-ab73-66820a117f70」になります。
ls-nsxt-N.json
{
"display_name": "オーバーレイ 論理スイッチの名前",
"description": "",
"transport_zone_id": "オーバーレイ トランスポート ゾーン ID",
"admin_state": "UP",
"replication_mode": "MTEP",
"hybrid": false,
"_revision": 0
}
論理スイッチを作成します。
作成と同時に、レスポンス情報から論理スイッチ ID を取得しておきます。
$ curl -ks -u $CRED -H "Content-type: application/json" -X POST -d @./ls-nsxt-N.json https://$MGR/api/v1/logical-switches | jq -r '.id'
144f4777-a514-4351-b88e-5f6a1f6877e5
論理スイッチ ポートの作成。
NSX Manager の Web UI から実施する場合は、論理ルータ ポートを作成すると、論理スイッチのポートも自動作成されます。
一方、API の場合は、手動で論理スイッチ ポートを作成しておく必要があります。
JSON ファイルを作成します。
ここでは、先ほど作成した論理スイッチの ID が必要となります。
この環境であれば、論理スイッチ ID は「144f4777-a514-4351-b88e-5f6a1f6877e5」です。
ls-port-N.json
{
"display_name": "論理スイッチ ポート名",
"logical_switch_id": "オーバーレイ 論理スイッチ ID",
"admin_state": "UP"
}
論理スイッチ ポートを作成します。
ここでも、作成した論理スイッチ ポートの ID を取得しておきます。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./ls-port-N.json https://$MGR/api/v1/logical-ports | jq -r '.id'
02c7afd1-20cf-4528-8de2-360534960cd6
Tier-1 論理ルータ ポートの作成。
論理スイッチを Tier-1 論理ルータに接続し、ゲートウェイとなる IP アドレスを設定します。
ここでは、先ほど作成した、論理スイッチ ポートの ID が必要になります。
さらに、Tier-1 論理スイッチの ID が必要となるため、取得しておきます。
※ここでの論理スイッチ名「t1-router-001」は、前回の投稿で作成したものを指定します。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers | jq -r '.results[] | select(.router_type=="TIER1" and .display_name=="t1-router-001") | .id'
b8c1e482-a6d0-47eb-aca3-315abf738c8f
t1-port-N.json
{
"display_name": "論理ルータ ポートの名前",
"resource_type": "LogicalRouterDownLinkPort",
"linked_logical_switch_port_id": {
"target_id": "オーバーレイ 論理スイッチ ポート ID"
},
"logical_router_id": "Tier-1 論理ルータ ID",
"subnets": [
{
"ip_addresses": [
"ゲートウェイの IP アドレス"
],
"prefix_length": 24
}
]
}
ここまでの情報により、ここまでの実行例であれば下記のように値を指定します。
- logical_router_id: "b8c1e482-a6d0-47eb-aca3-315abf738c8f"
- linked_logical_switch_port_id の target_id: "02c7afd1-20cf-4528-8de2-360534960cd6"
- logical_router_id 配下の ip_addresses: "172.16.1.1"
それでは、JSON ファイルをもとに Tier-1 論理ルータ ポートを作成します。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t1-port-N.json https://$MGR/api/v1/logical-router-ports
これで、オーバーレイ ネットワークとそのゲートウェイが作成されます。
今回作成した論理スイッチに VM を接続しネットワーク設定をすれば、
ping などで Tier-1 論理ルータ ポートに設定したアドレスへの疎通がとれるはずです。
ただ、今回作成した論理スイッチのネットワークには DHCP サーバがないため
VM には手動でのネットワーク設定が必要になります。
次回は、NSX-T による DHCP サーバを API で作成します。
つづく・・・