NSX-T を REST API で操作してみます。
今回は NSX-T による DHCP サーバを作成して、オーバーレイ論理スイッチに接続します。
一連の投稿の前提/想定環境などは下記をどうぞ。
NSX-T 2.4 を REST API で操作してみる。Part.1
前回はこちら。
NSX-T 2.4 を REST API で操作してみる。Part.3
この投稿は、以前の下記投稿の API 版です。
自宅ラボで NSX-T 2.4 環境を構築する。Part.10
NSX-T の DHCP サーバ作成は、下記のような流れです。
- サーバ プロファイルの作成
- DHCP サーバの作成
- DHCP サーバへの IP アドレス プールの作成
- DHCP サーバを論理スイッチに接続
DHCP サーバ プロファイルの作成。
まず、サーバ プロファイルの定義を記載した JSON ファイルを作成します。
NSX Edge クラスタ ID が必要なので、前回まで内容をもとに ID を確認して、
JSON ファイルを完成させます。
下記のような JSON を作成します。
dhcp-prof-N.json
{
"display_name": "DHCP プロファイル名",
"edge_cluster_id": "Edge クラスタ ID"
}
DHCP サーバ プロファイルを作成します。
コマンドライン末尾の jq コマンドにより、作成された サーバ プロファイルの ID を取得しておきます。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./dhcp-prof-N.json https://$MGR/api/v1/dhcp/server-profiles | jq -r '.id'
DHCP サーバの作成。
JSON ファイルを作成します。おもに赤字部分を、ネットワーク環境にあわせます。
dhcp_server_ip には、未使用の IP アドレスを指定します。
gateway_ip には、DHCP サービスを利用する論理スイッチを接続した
論理ルータ ポートの IP アドレスを指定します。
DNS や ドメイン名の設定といった、DHCP オプションも指定できます。
dhcp-sv-N.json
{
"display_name": "DHCP サーバ名",
"dhcp_profile_id": "DHCP サーバ プロファイルの ID",
"ipv4_dhcp_server": {
"dhcp_server_ip": "172.16.1.2/24",
"dns_nameservers": [
"192.168.1.101",
"192.168.1.102"
],
"domain_name": "go-lab.jp",
"gateway_ip": "172.16.1.1"
}
}
DHCP サーバを作成します。
ここでも、作成した DHCP サーバの ID を取得しておきます。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./dhcp-sv-N.json https://$MGR/api/v1/dhcp/servers | jq -r '.id'
DHCP の IP プールの作成。
DHCP サーバには、IP アドレス プールを作成します。
JSON ファイルを作成します。赤字の部分を、ネットワークにあわせて修正します。
ここでの gateway_ip は、論理スイッチを接続している Tier-1 論理ルータ ポートの IP アドレスを指定します。
dhcp-pool-N.json
{
"display_name": "DHCP IP アドレス プール名",
"gateway_ip": "172.16.1.1",
"allocation_ranges": [
{
"start": "172.16.1.10",
"end": "172.16.1.99"
}
]
}
IP アドレス プールを作成します。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./dhcp-pool-N.json https://$MGR/api/v1/dhcp/servers/$DHCP_SV_ID/ip-pools
論理スイッチへの DHCP サーバの接続。
作成した DHCP サーバを、論理スイッチに接続します。
対象の論理スイッチの ID が必要になるため、取得しておきます。
※論理スイッチ「ls-nsxt-001」は、前回に作成したものです。
$ curl -ks -u $CRED -X GET https://$MGR/api/v1/logical-switches | jq -r '.results[] | select(.display_name == "ls-nsxt-001") | .id'
これまでの Tier-1/Tier-0 のリンクや、論理ルータ ポート作成とは異なり、
「"attachment_type" : "DHCP_SERVICE"」という DHCP 接続のための指定をします。
下記のような JSON ファイルを作成します。
dhcp-port-N.json
{
"display_name": "DHCP サーバを接続する論理スイッチ ポートの名前",
"logical_switch_id": "論理スイッチ ID",
"attachment" : {
"attachment_type" : "DHCP_SERVICE",
"id" : "DHCP サーバの ID"
},
"admin_state": "UP"
}
では、DHCP サーバを論理スイッチに接続(ポートを作成)します。
$ curl -ks -u $CRED -X POST -H "Content-type: application/json" -d @./dhcp-port-N.json https://$MGR/api/v1/logical-ports
これで、論理スイッチに接続した VM で、DHCP サービスが利用可能になります。
ここまでの DHCP サービスの簡易的な設定確認には、
論理スイッチ に接続している VM などからの下記のようなものが考えられます。
- 実際に VM で DHCP によるネットワーク設定がされるか?
- VM から、DHCP サーバに指定した dhcp_server_ip への疎通確認などが可能か?
もうすこし続く。