Skip navigation

以前に、HoL で、NSX API を試す方法を紹介しました。

NSX-v の API を HoL で実行してみる。

 

今回は、HOL-SDC-1603 VMware NSX Introduction の Module 1 と同様の設定を

Web Client のかわりに curl コマンドで NSX API を実行して設定してみようと思います。

コマンドラインで指定している 192.168.110.15 は、NSX Manager の IP アドレスです。

 

手順の流れ

  1. 論理スイッチ「Prod_Logical_Switch」を作成する。
  2. 作成した論理スイッチと NSX Edge を接続する。
  3. VM「web-03a」と「web-04a」の vNIC を、作成した論理スイッチに接続する。
  4. 確認してみる。

 

1. 論理スイッチ作成。

 

まず、論理スイッチ「Prod_Logical_Switch」を作成します。

下記のような XML ファイルを作成しました。

 

ls-prod.txt

<virtualWireCreateSpec>

  <name>Prod_Logical_Switch</name>

  <tenantId>virtual wire tenant</tenantId>

  <controlPlaneMode>UNICAST_MODE</controlPlaneMode>

  <guestVlanAllowed>false</guestVlanAllowed>

</virtualWireCreateSpec>

 

「テキストの送信」で、下記のようなコマンドを送信、実行して、ファイルを作成します。

cat <<EOF > ls-prod.txt

<virtualWireCreateSpec>

  <name>Prod_Logical_Switch</name>

  <tenantId>virtual wire tenant</tenantId>

  <controlPlaneMode>UNICAST_MODE</controlPlaneMode>

  <guestVlanAllowed>false</guestVlanAllowed>

</virtualWireCreateSpec>

EOF

 

XML で指定している ID は、Web Client の NSX Edges 画面であたりがつきますが、

下記のような NSX Edge の情報を取得する API からでもわかります。

curl -k -s -u admin:VMware1! -X GET https://192.168.110.15/api/4.0/edges | xmllint --format - | grep -e objectId -e name

hol-nsx-mod1-0.png

 

ファイルを読み込んで、論理スイッチを作成する API を実行します。

下記のようなコマンドラインを実行します。virtualwire は、論理スイッチのことです。

cat ls-prod.txt | curl -k -s -u admin:VMware1! -X POST -H 'Content-type: text/xml' -d @- https://192.168.110.15/api/2.0/vdn/scopes/vdnscope-1/virtualwires

 

このような感じで実行します。例では virtualwire-5 という ID で、論理スイッチが作成されました。

hol-nsx-mod1-1.png

 

2. 論理スイッチと NSX Edge を接続。

 

作成した論理スイッチと、NSX Edge Service Gateway(ESG) を接続します。

この ESG は、Perimeter-Gateway の役割として配置されているものです。

 

XML は、下記のように Lab マニュアルでの設定値を指定しました。
portgroupId には、論理スイッチ作成時に表示された virtualwire-5 を指定します。

 

edge-if-prod.txt

<vnic>

  <name>Prod_Interface</name>

  <addressGroups>

    <addressGroup>

      <primaryAddress>172.16.40.1</primaryAddress>

      <subnetMask>255.255.255.0</subnetMask>

      <subnetPrefixLength>24</subnetPrefixLength>

    </addressGroup>

  </addressGroups>

  <mtu>1500</mtu>

  <type>internal</type>

  <isConnected>true</isConnected>

  <index>5</index>

  <portgroupId>virtualwire-5</portgroupId>

  <enableProxyArp>false</enableProxyArp>

  <enableSendRedirects>false</enableSendRedirects >

</vnic>


ファイルは、下記のように作成します。

cat <<EOF > edge-if-prod.txt

<vnic>

  <name>Prod_Interface</name>

  <addressGroups>

    <addressGroup>

      <primaryAddress>172.16.40.1</primaryAddress>

      <subnetMask>255.255.255.0</subnetMask>

      <subnetPrefixLength>24</subnetPrefixLength>

    </addressGroup>

  </addressGroups>

  <mtu>1500</mtu>

  <type>internal</type>

  <isConnected>true</isConnected>

  <index>5</index>

  <portgroupId>virtualwire-5</portgroupId>

  <enableProxyArp>false</enableProxyArp>

  <enableSendRedirects>false</enableSendRedirects >

</vnic>

EOF

 

上記のファイルを指定して、ESG のインターフェースを 5 を設定して論理スイッチを接続します。

edge-id として「edge-2」、インターフェースの Index として 5 を指定しています。

cat edge-if-prod.txt | curl -k -s -u admin:VMware1! -X PUT -H 'Content-type: text/xml' -d @- https://192.168.110.15/api/4.0/edges/edge-2/vnics/5

 

3. 論理スイッチに vNIC を接続。

 

作成した論理スイッチに、VM の vNIC を接続します。

このとき使用する XML では、VM と vNIC の ID が必要になります。


VM ID と vNIC ID の確認。

 

論理スイッチに VM の vNIC を接続するときには、VM と vNIC の ID を指定する必要があります。

NSX の API ガイドでは vCenter の Web UI 経由(/mob)で確認する方法が紹介されていますが、

HoL だと操作が大変なので、web-03a と web-04a に関係する ID を、PowerCLI で確認してしまいます。

 

まず PowerCLI を起動して、vCenter に接続します。

PowerCLI> Connect-VIServer -Server vcsa-01a -User CORP\Administrator -Password VMware1!

 

VM の ID は、下記のコマンドラインでわかります。

UUID(ここでは PersistentId)の値も指定するケースがあるようなので、ついでに見ておきます。

PowerCLI> Get-VM web-0[34]a | ft -AutoSize Id,PersistentId

 

vNIC の ID は、下記のコマンドラインでわかります。

4000 から ID が付与されていますが、API で指定するときは

4000 → 000、4001 → 001 といったように読み替えるようです。

PowerCLI> Get-VM web-0[34]a | Get-NetworkAdapter | ft -AutoSize Parent,Id,Name

 

VM の ID がそれぞれ vm-305 と vm-306 だとわかります。

hol-nsx-mod1-2.png

vNIC の ID は、4000~ の数字です。

hol-nsx-mod1-3.png

 

論理スイッチに vNIC を接続する。

 

今回の XML の内容は、下記のようにしました。

 

vnic-attach_web-03a.txt

  • web-03a を Prod_Logical_Switch に接続する。
    • 502e58e2-c139-f2d9-5560-9df1ffa26b45 が web-03a を表します。
    • vnicUuid は、先頭が VM ID で、 「.000」が vNIC の順番によって変わります。
    • vitualwire-5 が、Prod_Logical_Switch を表します。

<com.vmware.vshield.vsm.inventory.dto.VnicDto>

  <objectId>502e58e2-c139-f2d9-5560-9df1ffa26b45</objectId>

  <vnicUuid>502e58e2-c139-f2d9-5560-9df1ffa26b45.000</vnicUuid>

  <portgroupId>virtualwire-5</portgroupId>

</com.vmware.vshield.vsm.inventory.dto.VnicDto>

 

vnic-attach_web-04a.txt

  • web-04a を Prod_Logical_Switch に接続する。
  • 502ea036-ec16-45e1-2a61-a702e7f73d5a.000 と vm-306 は、どちらも web-04a を表します。
  • ためしに objectId を、vm-N 形式の VM ID を指定しても設定できました。
    ただし API Guide は UUID 指定なので、その方がよいかもしれません。
  • ちなみに、vnicUuid は vm-N 形式だとダメでした。

<com.vmware.vshield.vsm.inventory.dto.VnicDto>

  <objectId>vm-306</objectId>

  <vnicUuid>502ea036-ec16-45e1-2a61-a702e7f73d5a.000</vnicUuid>

  <portgroupId>virtualwire-5</portgroupId>

</com.vmware.vshield.vsm.inventory.dto.VnicDto>

 

それぞれ、下記のようにファイル作成します。

 

web-03a 用

cat <<EOF > vnic-attach_web-03a.txt

<com.vmware.vshield.vsm.inventory.dto.VnicDto>

  <objectId>502e58e2-c139-f2d9-5560-9df1ffa26b45 </objectId>

  <vnicUuid>502e58e2-c139-f2d9-5560-9df1ffa26b45.000</vnicUuid>

  <portgroupId>virtualwire-5</portgroupId>

</com.vmware.vshield.vsm.inventory.dto.VnicDto>

EOF


web-04a 用

cat <<EOF > vnic-attach_web-04a.txt

<com.vmware.vshield.vsm.inventory.dto.VnicDto>

  <objectId>vm-306</objectId>

  <vnicUuid>502ea036-ec16-45e1-2a61-a702e7f73d5a.000</vnicUuid>

  <portgroupId>virtualwire-5</portgroupId>

</com.vmware.vshield.vsm.inventory.dto.VnicDto>

EOF

 

web-03a の vNIC を接続します。

cat vnic-attach_web-03a.txt | curl -k -s -u admin:VMware1! -X POST -H 'Content-type: text/xml' -d @- https://192.168.110.15/api/2.0/vdn/virtualwires/vm/vnic

 

web-04a の vNIC を接続します。

cat vnic-attach_web-04a.txt | curl -k -s -u admin:VMware1! -X POST -H 'Content-type: text/xml' -d @- https://192.168.110.15/api/2.0/vdn/virtualwires/vm/vnic

hol-nsx-mod1-6.png

 

4. 設定の確認。

 

Web Client でも、作成した論理スイッチ「Prod_Logical_Switch」が表示されます。

hol-nsx-mod1-4.png

 

ESG(Perimeter-Gateway) の vNIC 5 に、「Prod_Interface」 が設定されています。

hol-nsx-mod1-5.png


論理スイッチ「Prod_Logical_Switch」 に、VM が接続されています。

接続した VM 同士である web-03a から web-04a に Ping も飛びます。

hol-nsx-mod1-7.png

 

Lab の冒頭ということもあり簡単な設定内容の例でしたが、NSX API は多くの機能に対応しています。

REST API は今回の curl コマンドに限らず様々な言語、ツールから実行することができるので、

うまく利用すれば、ネットワーク構成変更を柔軟に自動化したりできそうです。

 

API ガイドはこちらです。

 

NSX vSphere API Guide

NSX 6.2 for vSphere

http://pubs.vmware.com/NSX-62/topic/com.vmware.ICbase/PDF/nsx_62_api.pdf

 

以上、NSX API 体験でした。