VirtualBoxを操作する際に、いちいちホストマシンにログイン(GUI, CUI)するのは面倒です。この記事では ブラウザから VirtualBox を操作(VMの起動・停止・スナップショット操作)する方法を紹介します。自動起動や停止は、以下の前回記事を参照してください。
VirtualBox には SOAP で VM を制御する API が用意されているようです。この API を利用するために vboxwebsrv というサービスを利用します。そして、この SOAP API を通して VirtualBox 制御する phpVirtualBox というソフトを利用することで、ブラウザで 各VM の起動・停止・スナップショット操作ができるようになります。
Windows をホストOSとした phpVirtualBox の設定記事も追加しましたこちらです↓↓↓
https://download.virtualbox.org/virtualbox/SDKRef.pdf
https://github.com/phpvirtualbox/phpvirtualbox
phpVirtualBox のセットアップ
利用した環境を簡単に紹介しておくと、CentOS 7 (7.4 を利用しています) で、VirtualBox は 5.2 系です。(細かく確認はしていませんが、現時点で VirtualBox 6.0 系を利用したい場合、phpVirtualBox は master ブランチではなく develop ブランチの取得が必要だったと思います。)
必要なパッケージをインストールします。policycoreutils-python パッケージは、SELinux の設定をおこなうために入れています。SELinux を使っていない場合は、不要です。
yum -y unzip
yum -y policycoreutils-python
phpVirtualBox を取得し、apache の ドキュメントルートに展開します。フォルダ名が長いので vbox と変更しています。
unzip master.zip -d /var/www/html/
mv /var/www/html/phpvirtualbox-master /var/www/html/vbox
popd
phpVirtualBox のコンフィグファイルを準備します。(サンプルを利用します。)
config.php を修正します。修正箇所は以下の3ヶ所です。(認証なしでアクセスできるようにしています)
1 2 3 4 5 6 | ・・・ var $username = ''; # 空にする var $password = ''; # 空にする ・・・ var $noAuth = true; # アンコメント ・・・ |
vboxwebsrv のサービスを通して vboxuser が認証なしで VirtualBox を操作できるように設定します。/etc/default/virtualbox は前回記事でも利用したファイルです。書きつぶさないように、追加します。
echo "VBOXWEB_HOST=127.0.0.1" >> /etc/default/virtualbox
sudo -u vboxuser VBoxManage setproperty websrvauthlibrary null
httpd の公開コンテンツとしてアクセスできる用に SELinux を設定をします。(phpVirtualBox を展開したディレクトリと vboxwebsrv が利用するポートに設定します。)
restorecon /var/www/html/ -R
semanage port -a -t http_port_t -p tcp 18083
vboxwebsrv と apache を起動します。
systemctl start vboxweb-service
systemctl enable httpd
systemctl start httpd
web ページにアクセスできるようにファイヤーウォールを開けます。
firewall-cmd --reload
動作確認
別の PC から、セットアップした端末へブラウザで web アクセスして以下のような画面が出力されることを確認します。
エラーが出てアクセスできない
ブラウザでアクセスした際に、以下のようなエラーが出て、操作画面にアクセスできない場合は、vboxwebsrv の起動がうまくいっていません。
/etc/default/virtualbox の設定が間違っていないか。18083 ポートは空いているか。認証設定(認証なし)は正しくできているか。 SELinux の設定は間違っていないか。ファイヤーウォールは空いているか。切り分けながら見直してみるとよいでしょう。