概要
NSX Manager の API を curl でいろいろコールしてみました
サンプルを紹介します
環境
- NSX Manager 6.3.1 Build 5124716
Lookup Service URL を取得/設定する
取得
curl -k -u admin:$pass https://xxx.xxx.xxx.xxx/api/2.0/services/ssoconfig
設定
curl -k -X POST -u admin:$pass -H 'Content-Type: application/xml' -d @- https://xxx.xxx.xxx.xxx/api/2.0/services/ssoconfig << EOF
<ssoConfig>
<ssoLookupServiceUrl>https://[vcenter-ip]:443/lookupservice/sdk</ssoLookupServiceUrl>
<ssoAdminUsername>administrator@vsphere.local</ssoAdminUsername>
<ssoAdminUserpassword>$pass</ssoAdminUserpassword>
<certificateThumbprint>96:09:D6:5B:E0:83:58:1B:BA:2B:CC:78:22:88:33:36:64:50:32:EB</certificateThumbprint>
</ssoConfig>
EOF
Manage vCenter Registration の Lookup Service URL の部分を設定することができます
ユーザの取得/登録をする
取得
curl -k -u admin:$pass https://xxx.xxx.xxx.xxx/api/2.0/services/usermgmt/users/vsm
詳細を取得
curl -s -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/2.0/services/usermgmt/user/administrator@vsphere.local'
administrator@vsphere.local
の部分は user_id を指定します
一覧を取得する API だと vsphere.local\administrator
という感じで返ってくるのですが指定する場合は @
形式を使います
登録
curl -k -X POST -u admin:$pass -H 'Content-Type: application/xml' -d @- 'https://xxx.xxx.xxx.xxx/api/2.0/services/usermgmt/role/user001@vsphere.local?isGroup=false' << EOF
<accessControlEntry>
<role>security_admin</role>
<resource>
<resourceId>globalroot-0</resourceId>
</resource>
</accessControlEntry>
EOF
globalroot-0
もしっかり指定しましょう
ロールの取得
curl -k -u admin:$pass https://xxx.xxx.xxx.xxx/api/2.0/services/usermgmt/roles
特定のユーザのロールを取得
curl -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/2.0/services/usermgmt/role/administrator@vsphere.local'
edge の取得/デプロイ
取得
curl -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/4.0/edges'
詳細、vnics などの情報も取得できる
curl -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/4.0/edges/edge-5'
デプロイ (Gateway Service)
長いので後述で簡単な説明をします
curl -k -X POST -u admin:$pass -H 'Content-Type: application/xml' -d @- 'https://xxx.xxx.xxx.xxx/api/4.0/edges' << EOF
<edge>
<datacenterMoid>datacenter-2</datacenterMoid>
<name>edge_6</name>
<description>description</description>
<tenant>default</tenant>
<fqdn>NSX-edge-6</fqdn>
<vseLogLevel>info</vseLogLevel>
<enableFips>true</enableFips>
<appliances>
<applianceSize>compact</applianceSize>
<enableCoreDump>true</enableCoreDump>
<appliance>
<resourcePoolId>resgroup-8</resourcePoolId>
<datastoreId>datastore-12</datastoreId>
<hostId>host-10</hostId>
</appliance>
</appliances>
<vnics>
<vnic>
<index>0</index>
<name>edge_if</name>
<type>internal</type>
<portgroupId>virtualwire-1</portgroupId>
<addressGroups>
<addressGroup>
<primaryAddress>192.168.200.201</primaryAddress>
<subnetMask>255.255.255.0</subnetMask>
</addressGroup>
</addressGroups>
<macAddress>
<edgeVmHaIndex>0</edgeVmHaIndex>
</macAddress>
<isConnected>true</isConnected>
</vnic>
</vnics>
<cliSettings>
<userName>admin</userName>
<password>VMware12345!</password>
<remoteAccess>true</remoteAccess>
</cliSettings>
<autoConfiguration>
<enabled>true</enabled>
<rulePriority>low</rulePriority>
</autoConfiguration>
</edge>
EOF
必要最低限のパラメータのみ指定しているつもりです
他にも設定可能なパラメータがあるので詳細はリファレンスを御覧ください
まずデプロイするデータセンターの ID は datacenterMoid
で指定します
appliance
内でポートグループやストレージを指定します
指定するのは名前ではなく ID になるので Web Client などで調べて入力してください
vnics
でネットワーク情報を指定します
インタフェースに割り当てる IP (primaryAddress
) は必須です
HA に使うネットワークインターフェースを指定する edgeVmHaIndex
も必須です
Edge に付与したインタフェースの ID を指定しましょう
virtualwire-1
は Edge に作成した論理スイッチにある仮想ワイヤー ID になります
autoConfiguration
は Firewall のデフォルトルールを決めます
rulePriority
を low にするとデフォルトルールが全許可で作成されます
逆に high にすると全拒否状態で作成されます
cliSettings
では Edge に CLI でアクセスする場合の認証情報を指定します
パスワードにポリシーがあるので注意してください
ネットワークファブリックのバージョン取得
ホスト ID を指定して取得します
curl -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/2.0/nwfabric/status?resource=host-10'
NSX コントローラの取得
curl -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/2.0/vdn/controller'
NSX Manager のバージョン確認
curl -s -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/1.0/appliance-management/global/info'
もう少し詳しく知りたい場合は
curl -s -k -u admin:$pass 'https://xxx.xxx.xxx.xxx/api/1.0/appliance-management/summary/system'
NSX CLI を実行する
なぜか CLI を実行する機能もある
CLI でしか実行できないことがあるのだろうか
curl -s -k -X POST -u admin:$pass -H 'Accept: text/plain' -H 'Content-Type: application/xml' -d @- 'https://xxx.xxx.xxx.xxx/api/1.0/nsx/cli?action=execute' << EOF
<nsxcli>
<command>show logical-switch list host host-21 vni</command>
</nsxcli>
EOF
0 件のコメント:
コメントを投稿