最新ではvmrun.exeが使えなくなったので対応(REST API化)した件(Vmware Workstation 15以降)
Windows 10 Update 1903 をいれたら、VMWare Workstation 14.0.7が立ち上がらなくなった。
というか、ブラックスクリーン状態?
多分、VMWare Workstation 14の最新版にすればいいのかと思ったが、
もう、ついでだから最新メジャーバージョンのVMWare Workstation 15にしてみた。
が、バッチで仮想マシンの自動起動に利用していたvmrun.exeがこんどは使えなくなってる・・・。
ダウンロードのページにもでてこない。もうサポートしないみたい。
で、代替手段を探ってみたらあったのは「REST API」を使えって事。
使えるようになるまで、手探りだったがわかったのでまとめ。
1.REST APIをつかえるようにする。
VMWareのフォルダでコマンドプロンプトを立ち上げる。
たいていは「C:\Program Files (x86)\VMware\VMware Player」だとおもう。
で、そこで、「vmrest.exe -C」といれるとユーザー名とパスワードを聞かれる。
これは後で使うWeb画面で使用するユーザ名、パスワードになるので、好きに設定してメモっておく。
設定したら「vmrest.exe -p xxxx」を実行する。 xxxxは使用したいポート番号。指定しなければデフォルトは8697。
画面に表示されたアドレスでブラウザに接続する。
※あくまでもローカルでやりたいとき。外部からコントロールしたい場合はopen sslを導入して証明書も必要ですが、ここには書きません。
2.ブラウザを立ち上げると、以下のようになるので、右上のAuthenticateを押す。
3.1.で設定したユーザー名/パスワードを入力してSave
4.「VM Management」の「Hide/Show」をおすと展開される。
5.いちばん上の「Get」の「/vms」を押す。
6.スクロールして「Try It」を押す。
7.コマンドと登録済みの仮想マシンの情報が一覧化されるので、自分の目的の仮想マシンのIDをコピーしてテキストエディタに張り付ける。
8.上記のコマンドを以下のようにすると、VMWareを立ち上げるコマンドになる。
1.(超重要)「'」シングルクォートを「"」ダブルクォートに変える
2.「/vms」のあとに7.で取得したマシンID+「/power」にする。
3.「GET」を「PUT」に変える。
4.「--header 'Accept:~'」をコピーして「Accept:」を「Content-Type:」に書き換えたものを追加する。
5.コマンドの先頭は「echo.on|」を入れる(onのあとにスペースをいれてはだめ)。
6.コマンドの最後に「-d @-」を入れる。
例えば
curl 'http://127.0.0.1:xxxxx/api/vms' -X GET --header 'Accept: application/vnd.vmware.vmw.rest-v1+json' --header 'Authorization: Basic cTESTTESTTESTTESTE='
↓
echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-
(※:「MACHINEIDMACHINEID」の部分は7.で取得したIDの意味)
とこんな感じ。
出来上がった一番下のコマンドをうてば起動する。
※注意:立ち上がった仮想マシンはバックグラウンドで起動する。VMWare Workstationで確認すると「パワーオン」になっている。
これをフォアグラウンドにするには、VMWare Workstationでそのまま「仮想マシンの再生」をすればいい。
これがわかっていなくて「コマンド利いていないじゃん」となってしまわないように。(実際、自分はそう思ってました。)
立ち上がっている場合は「vmware-vmx.exe」も実体のプロセスとして立ち上がっています。
バッチファイルにする場合はこんな感じで書いておくといい。
cd "C:\Program Files (x86)\VMware\VMware Player"
start vmrest -p xxxx
ping -n 2 localhost >nul 2>&1
echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-
というか、ブラックスクリーン状態?
多分、VMWare Workstation 14の最新版にすればいいのかと思ったが、
もう、ついでだから最新メジャーバージョンのVMWare Workstation 15にしてみた。
が、バッチで仮想マシンの自動起動に利用していたvmrun.exeがこんどは使えなくなってる・・・。
ダウンロードのページにもでてこない。もうサポートしないみたい。
で、代替手段を探ってみたらあったのは「REST API」を使えって事。
使えるようになるまで、手探りだったがわかったのでまとめ。
1.REST APIをつかえるようにする。
VMWareのフォルダでコマンドプロンプトを立ち上げる。
たいていは「C:\Program Files (x86)\VMware\VMware Player」だとおもう。
で、そこで、「vmrest.exe -C」といれるとユーザー名とパスワードを聞かれる。
これは後で使うWeb画面で使用するユーザ名、パスワードになるので、好きに設定してメモっておく。
設定したら「vmrest.exe -p xxxx」を実行する。 xxxxは使用したいポート番号。指定しなければデフォルトは8697。
画面に表示されたアドレスでブラウザに接続する。
※あくまでもローカルでやりたいとき。外部からコントロールしたい場合はopen sslを導入して証明書も必要ですが、ここには書きません。
2.ブラウザを立ち上げると、以下のようになるので、右上のAuthenticateを押す。
3.1.で設定したユーザー名/パスワードを入力してSave
4.「VM Management」の「Hide/Show」をおすと展開される。
5.いちばん上の「Get」の「/vms」を押す。
6.スクロールして「Try It」を押す。
7.コマンドと登録済みの仮想マシンの情報が一覧化されるので、自分の目的の仮想マシンのIDをコピーしてテキストエディタに張り付ける。
8.上記のコマンドを以下のようにすると、VMWareを立ち上げるコマンドになる。
1.(超重要)「'」シングルクォートを「"」ダブルクォートに変える
2.「/vms」のあとに7.で取得したマシンID+「/power」にする。
3.「GET」を「PUT」に変える。
4.「--header 'Accept:~'」をコピーして「Accept:」を「Content-Type:」に書き換えたものを追加する。
5.コマンドの先頭は「echo.on|」を入れる(onのあとにスペースをいれてはだめ)。
6.コマンドの最後に「-d @-」を入れる。
例えば
curl 'http://127.0.0.1:xxxxx/api/vms' -X GET --header 'Accept: application/vnd.vmware.vmw.rest-v1+json' --header 'Authorization: Basic cTESTTESTTESTTESTE='
↓
echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-
(※:「MACHINEIDMACHINEID」の部分は7.で取得したIDの意味)
とこんな感じ。
出来上がった一番下のコマンドをうてば起動する。
※注意:立ち上がった仮想マシンはバックグラウンドで起動する。VMWare Workstationで確認すると「パワーオン」になっている。
これをフォアグラウンドにするには、VMWare Workstationでそのまま「仮想マシンの再生」をすればいい。
これがわかっていなくて「コマンド利いていないじゃん」となってしまわないように。(実際、自分はそう思ってました。)
立ち上がっている場合は「vmware-vmx.exe」も実体のプロセスとして立ち上がっています。
バッチファイルにする場合はこんな感じで書いておくといい。
cd "C:\Program Files (x86)\VMware\VMware Player"
start vmrest -p xxxx
ping -n 2 localhost >nul 2>&1
echo.on| curl "http://127.0.0.1:xxxx/api/vms/MACHINEIDMACHINEID/power" -X PUT --header "Content-Type: application/vnd.vmware.vmw.rest-v1+json" --header "Accept: application/vnd.vmware.vmw.rest-v1+json" --header "Authorization: Basic cTESTTESTTESTTESTE=" -d @-
コメント
コメントを投稿