Quantcast
Channel: VMware Communities : Blog List - All Communities
Viewing all articles
Browse latest Browse all 3135

NSX-T 2.4 を REST API で操作してみる。Part.5

$
0
0

NSX-T を REST API で操作してみます。

今回は、ラボで構成したルーティング/SNAT設定について API で追加設定してみます。

新規作成した Tier-1 論理ルータでのアドバタイズメント設定変更、

そして、Tier-0 論理ルータへのデフォルトルートと SNAT ルールの追加をします。

 

前回はこちら。

NSX-T 2.4 を REST API で操作してみる。Part.4

 

一連の投稿の前提/想定環境などは下記をどうぞ。

NSX-T 2.4 を REST API で操作してみる。Part.1

 

この投稿は、以前の下記投稿の API 版です。

自宅ラボで NSX-T 2.4 環境を構築する。Part.11

 

論理ルータ ID の取得。

今回の設定追加では、Tier-0/Tier-1 論理ルータ ID が必要になります。

論理ルータ ID の取得例はこれまでの投稿でも紹介しましたが、

下記のように NSX Manater の Web UI での表示名(display_name)と ID を一覧することもできます。

$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers | jq -r '.results[] | {"LR_Name": .display_name, "ID": .id}'

{

  "LR_Name": "t0-router-01",

  "ID": "64f51cf0-bdf8-49d2-8a51-309b97b6ab40"

}

{

  "LR_Name": "t1-router-001",

  "ID": "b8c1e482-a6d0-47eb-aca3-315abf738c8f"

}

 

今回は、URI の一部としてルータ ID を指定したいので、変数に格納しておきます。

たとえば、下記のようなコマンドラインでもルータ ID を取得できます。

 

Tier-0 論理ルータの ID です。

$ T0_LR_ID=`curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers | jq -r '.results[] | select(.router_type=="TIER0" and .display_name=="t0-router-01") | .id'`

$ echo $T0_LR_ID

64f51cf0-bdf8-49d2-8a51-309b97b6ab40

 

Tier-1 論理ルータの ID です。

$ T1_LR_ID=`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'`

$ echo $T1_LR_ID

b8c1e482-a6d0-47eb-aca3-315abf738c8f

 

Tier-1 論理ルータのアドバタイズメント設定変更。

API で新規作成した Tier-1 論理ルータの、ルート アドバタイズメントの有効化と、

 

念のため、現在のアドバタイズメント設定の _revision を確認しておきます。

「$T1_LR_ID」には、前の手順で取得した論理ルータ ID が含まれています。

数値がゼロ以外の場合は、JSON ファイルでもその値にあわせます。

 

$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-routers/$T1_LR_ID/routing/advertisement | jq -r '._revision'

0

 

JSON ファイルを作成します。

今回は、アドバタイズの状態と、「すべての接続ルートをアドバタイズ」にあたる

advertise_nsx_connected_routes を有効にします。

 

t1-adv-rule.json

{

  "resource_type" : "AdvertisementConfig",

  "enabled" : true,

  "advertise_nsx_connected_routes" : true,

  "_revision" : 0

}

 

そして、アドバタイズを設定変更します。

$ curl -ks -u $CRED -X PUT -H "Content-type: application/json" -d @./t1-adv-rule.json https://$MGR/api/v1/logical-routers/$T1_LR_ID/routing/advertisement

 

Tier-0 論理ルータへのスタティック ルート追加。

NSX-T のラボ環境で必須というわけではありませんが、Tier-0 ルータへのスタティック ルートを追加します。

 

下記のような、ルーティング情報の JSON ファイルを作成します。

デフォルト ルートとして、「"network": "0.0.0.0/0"」宛のネクスト ホップとして、192.168.1.46 を指定しています。

※宛先の IP アドレスは、前提環境としてNSX-T ネットワークの外部に用意してあるゲートウェイです。

 

t0-default-route-01.json

{

  "display_name": "t0-default-route-01",

  "network": "0.0.0.0/0",

  "next_hops": [

    {

      "ip_address": "192.168.1.1",

      "administrative_distance": 1

    }

  ]

}

 

下記のようなコマンドラインで、スタティックルートを追加できます。

「$T0_LR_ID」には、前の手順で取得した論理ルータ ID が含まれています。

$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t0-default-route-01.json https://$MGR/api/v1/logical-routers/$T0_LR_ID/routing/static-routes

 

Tier-0 ルータへの SNAT ルール追加。

これも必須ではありませんが、Tier-0 論理ルータへの SNAT ルールを追加しておきます。

SNAT ルールは Tier-0/Tier-1 どちらでも設定できますが、

今回はこの環境のネットワーク構成にあわせて Tier-0 ルータで設定します。

 

今回は、172.16.1.0/24 からのソース アドレスを 192.168.1.46 に変換します。

ルール適用するポートは、論理ルータ ポート ID で指定します。

 

Tier-0 論理ルータ ポートは、下記のように情報取得することもできます。

$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-router-ports?logical_router_id=$T0_LR_ID

 

下記のような JSON ファイルを用意します。

applied_tos には、適用先の Tier-0 論理ルータ ポートの情報を指定しています。

 

t0-nat-rule-01.json

{

  "action": "SNAT",

  "match_source_network": "172.16.1.0/24",

  "translated_network": "192.168.1.46",

  "enabled": true,

  "applied_tos": [

    {

      "target_id": "ルール適用先の Tier-0 論理ルータ ポート ID",

      "target_display_name": "t0-uplink-port",

      "target_type": "LogicalRouterPort",

      "is_valid": true

    }

  ]

}

 

そして、下記のようなコマンドラインで SNAT ルールを追加します。

$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./t0-nat-rule-01.json https://$MGR/api/v1/logical-routers/$T0_LR_ID/nat/rules

 

これで API を利用して、以前に構築した NSX-T のテナントネットワークと同様のラボ環境ができました。

ID の取得や JSON ファイルの生成なども含めて、一連の手順をスクリプトにしておくと、

複数環境の構成を自動化したりできるかなと思います。

 

以上、NSX-T 2.4 を API で操作してみる話でした。


Viewing all articles
Browse latest Browse all 3135

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>