VMware vCenter REST APIをcurlで実行する

Table of Content

はじめに

VMware vCenter 6.5からREST APIによる操作が可能になりました。
実際にcurlコマンドで操作してみたいと思います。

VMware vCenter Appliance 6.7で実行しています。

REST APIの流れ

REST APIの実行方法は次の順序で実行します。

  1. セッション作成
  2. APIによる操作
  3. 資格情報削除

セッション作成

次のコマンドでセッション作成を行います。「-u」でユーザID/パスワードを指定しPOSTメソッドでセッションの作成を行います。

curl -k -i -u <VCSAユーザID>:<VCSAパスワード> -X POST \
-c /tmp/cookie-jar.txt \
https://<ホスト名 or IPアドレス>/rest/com/vmware/cis/session

リクエストに対してセッションIDが返ってきます。

{"value":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

このセッションIDをヘッダに含めてAPIによる操作を行いますが、CookieにもセッションIDが含まれているので、ファイルに保存してセッション認証でAPI操作を行いたいと思います。

APIによる操作

VMホスト一覧をAPIで取得してみます。

curl -k -b /tmp/cookie-jar.txt https://<ホスト名 or IPアドレス>/rest/vcenter/vm | jq .

JSONで次の通りVM一覧が返ってきます。

{
   "value": [
     {
       "memory_size_MiB": 8192,
       "vm": "vm-145",
       "name": "VM名①",
       "power_state": "POWERED_ON",
       "cpu_count": 2
     },
     {
       "memory_size_MiB": 12288,
       "vm": "vm-146",
       "name": "VM名②",
       "power_state": "POWERED_ON",
       "cpu_count": 2
     }
   ]
}

資格情報削除

次のコマンドで資格情報の削除を行います。

curl -k -i -b /tmp/cookie-jar.txt -X DELETE  https://<ホスト名 or IPアドレス>/rest/com/vmware/cis/session

さいごに

APIの仕様は「https://<ホスト名 or IPアドレス>/apiexplorer」をブラウザで確認できます。
vSphare APIはSOAPで操作する方式でしたが、REST APIのサポートによってAPIの利用が容易になったかと思います。
6.5からの提供なので、できることがSOAPよりも少ないですが、手軽に利用できるのが良いところだと思います。
今後の展開に期待大!です。