ESXi Embedded Host ClientでESXi基本操作をブラウザ上で実現する！（ESXi用組み込みクライアント）

# はじめに

みんな大好き[VMware Labs Flings](https://labs.vmware.com/flings)（VMwareのエンジニアが、実験的なプロジェクトの成果物公開をしているサイト）から、便利だと思ったプロダクトを紹介します。

![vSphere+emeded+chrome.png](https://qiita-image-store.s3.amazonaws.com/0/10852/d5ac9b5d-2fdd-9a0c-152d-302b39dbf35c.png)

今回紹介するのは、ESXi用HTML5組み込みクライアントとも言える「[ESXi Embedded Host Client](https://labs.vmware.com/flings/esxi-embedded-host-client)」
2015/12/20にv4.0がリリースされて、かなり良い感じになったので紹介したいと思います。

環境を作ると、ブラウザから`https://[ESXiのIPアドレス]/ui`へアクセスする事で、下記の様な画面でESXiに対する一通りの操作がWebGUIから出来る様になります。

サイトの紹介イメージ  
![Screen-Shot-2015-08-25-at-19.19.51-1024x705.png](https://qiita-image-store.s3.amazonaws.com/0/10852/107dc870-e1f4-0960-7992-996cd7bed23b.png)

これまでESXi単体に対して操作する際は、CLIやAPI経由、もしくはWindows版（C#版）のvSphere Clinetをインストールする必要がありましたが、これがあればブラウザだけでも一通りの操作が出来ます。
（独自にWebGUIを作成されている強者な方もいらっしゃいますが→[VMware ESXiをSSHでがんばるぞい(コマンドライン操作色々)](http://qiita.com/binzume/items/096ce77f73b6e853c342)）

自分的には、HTML5で実装されているというGUIの操作感は一見の価値ありです。
vCenter Server付属のWeb Clientのもっさり感にフラストレーションが貯まっている人は感動する事間違いなし。

* 注意
    * Flingsのプロダクトなのでサポート等は無いです
    * 一部バギーな所があってエラーとか出ますが泣かない事

## 構築環境
* クライアントOS : Mac OS X El Capitan 11.11.2
* クライアントブラウザ : Google Chrome 47.0.2526.106 (64-bit)
* SSHクライアント : OS X標準のターミナル.app
* ESXi : VMware ESXi 6.0.0 build-3073146
    * 今回はVMware Fusion 8 Pro上のNested ESXiとして用意

## 事前準備
* ESXiやOS X、SSHクライアント、Chromeはセットアップ済みとします
* 自分は下記記事を参考に、VMware Furion 8 Pro + VMware ESXi 6.0 Update1aおよびターミナル環境を構築しています
    * [VMware Fusion 7 Pro を使って VMware ESXi 5.5 Update2 のテスト環境を構築する（Nested ESXi）](http://qiita.com/ysaotome/items/00bacd38cae8e250fed5)
    * [OS X 11.11 El Capitanでターミナル環境を整える (Homebrew+zsh+tmux+vim)](http://qiita.com/ysaotome/items/5bdd0de6bd339392c78f)

# 環境構築
## ESXi Embedded Host Clientのサイトを確認

1. 「[ESXi Embedded Host Client](https://labs.vmware.com/flings/esxi-embedded-host-client)」をブラウザで開きます。
2. 「[System Requirements](https://labs.vmware.com/flings/esxi-embedded-host-client#system-requirements)」タブへ移動すると、対応するESXiバージョンおよび、ブラウザバージョンが記載されています。
検証する環境が対象に含まれているか確認します。（v4.0ではこんな感じ）  
![ESXi_Embedded_Host_Client_–_VMware_Labs1.png](https://qiita-image-store.s3.amazonaws.com/0/10852/470ec6b7-043f-c90e-7bb2-127a54c73839.png)

3. 確認したら「[Summary](https://labs.vmware.com/flings/esxi-embedded-host-client#summary)」タブへ移動して、ページ下部の「ESXUI offline bundle for 6.x」を右クリックして`リンクアドレスをコピー`を選択
![ESXi_Embedded_Host_Client_–_VMware_Labs2.png](https://qiita-image-store.s3.amazonaws.com/0/10852/4e407f38-29ef-d4bd-25b9-09954ed4c879.png)

多分こんな感じのURLがクリップボードに入ります。

```zsh
http://download3.vmware.com/software/vmw-tools/esxui/esxui-offline-bundle.6.x.zip
```

## ESXiへSSHアクセス出来る状態にする
1. DCUI（Direct Console User Interface）へアクセスします(今回の環境だとVMware Fusionのコンソール)
![VMware_ESXi_6_DCUI.png](https://qiita-image-store.s3.amazonaws.com/0/10852/02590ff4-6ecd-70f7-47c1-56756b94c327.png)
    * ついでにDCUIに表示されているESXiへアクセスするIPアドレスも確認しておきます
    * 上記の場合は`192.168.76.131`がESXiへアクセスするIPアドレスになります
2. DCUIにて`F2`キーを押下すると「Authentication Required」ポップアップ表示されますので、`Login Name`へ`root`と入力し、`Password`へ対応するパスワードを入力後、`Enter`を押下して、「<F2> Customize System/View Logs」へアクセスします。
3. メニューから`Troubleshooting Options`を選択して`Enter`を押下
4. メニューから`Enable SSH`を選択して`Enter`を押下し、表記が「SSH is Enabled」となった事を確認
![VMware_ESXi_6_DCUI4.png](https://qiita-image-store.s3.amazonaws.com/0/10852/af9f8b46-5609-99a3-aa7a-b04a29103312.png)
5. 確認出来たら、`ESC`キーを2回押下して終了します

## SSH接続
1. ターミナルを開いてSSH接続を確認します
    * `192.168.76.131`の部分は確認したESXiへアクセスするIPアドレスを入れます

```zsh:ターミナルで実行
$ ssh -p 22 root@192.168.76.131
```

```zsh:実行結果
The authenticity of host '192.168.76.131 (192.168.76.131)' can't be established.
RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.76.131' (RSA) to the list of known hosts.
Password:
The time and date of this login have been sent to the system logs.

VMware offers supported, powerful system administration tools.  Please
see www.vmware.com/go/sysadmintools for details.

The ESXi Shell can be disabled by an administrative user. See the
vSphere Security documentation for more information.
[root@localhost:~]
```

# ESXi Embedded Host Clientのインストール

1. ESXi Embedded Host Clientのサイトで確認したURLを元にファイルをダウンロード

    ```zsh:ターミナルで実行
    [root@localhost:~] wget -P /tmp/ http://download3.vmware.com/software/vmw-tools/esxui/esxui-offline-bundle.6.x.zip && ls -lt /tmp/
    ```
    ```zsh:実行結果
    Connecting to download3.vmware.com (23.67.163.51:80)
    esxui-offline-bundle 100% |******************************************************************************************|  2764k  0:00:00 ETA
    total 2780
    -rw-r--r--    1 root     root       2830737 Dec 29 10:42 esxui-offline-bundle.6.x.zip
    -rw-------    1 root     root            40 Dec 29 10:40 probe.session
    drwx------    1 root     root           512 Dec 29 10:00 vmware-root
    [root@localhost:~] 
    ```

2. ダウンロードしたプロダクトをインストール

    ```zsh:ターミナルで実行
    [root@localhost:~] esxcli software vib install -d /tmp/esxui-offline-bundle.6.x.zip
    ```
    ```zsh:実行結果
    Installation Result
       Message: Operation finished successfully.
       Reboot Required: false
       VIBs Installed: VMware_bootbank_esx-ui_0.0.2-0.1.3357452
       VIBs Removed:
       VIBs Skipped:
    [root@localhost:~]
    ```

3. インストールされたか確認

    ```zsh:ターミナルで実行
    [root@localhost:~] esxcli software vib list | grep esx-ui
    ```
    ```zsh:実行結果
    esx-ui                         0.0.2-0.1.3357452                     VMware  VMwareCertified   2015-12-29
    ```

4. 一時ファイルの削除

    ```zsh:ターミナルで実行
    [root@localhost:~] rm -rf /tmp/esxui-offline-bundle.6.x.zip
    ```

## インストール結果を確認
1. ブラウザを開いて`https://192.168.76.131/ui`へアクセス。`192.168.76.131`の部分は確認したESXiへアクセスするIPアドレスを入れます
![VMware_ESXi_-_Log_in.png](https://qiita-image-store.s3.amazonaws.com/0/10852/74a91dcd-fd7f-6f69-99a9-758f12e65678.png)
2. `User name`と`Password`を入力して`Log in`ボタンをクリック
3. ログイン出来ればインストール成功です
![VMware_ESXi_-_localhost_localdomain.png](https://qiita-image-store.s3.amazonaws.com/0/10852/8f415383-de87-492a-2970-914ec585eb22.png)

# 使ってみよう！

## 仮想マシン作成
1. `Create/Register VM`ボタンをクリックするとウィザードが立ち上がります。
![VMware_ESXi_-_localhost_localdomain-createvm1.png](https://qiita-image-store.s3.amazonaws.com/0/10852/8c44e5a4-b655-e8a8-423a-e832d7737b32.png)
    * `Create a new virtual machine`では、このままウィザードに沿って仮想マシンの作成が出来ます
    * `Deploy a virtual machine from an OVF or OVA file` では、ドラッグ＆ドロップでOVF、OVA形式の仮想マシンをアップロードして仮想マシンの作成が出来ます（Web Clientみたいにプラグインを入れる必要無し！）
    * `Register an existing virtual machine`では、データストア内のvmxおよびvmdkを含む仮想マシンイメージからインベントリへの登録が出来ます
2. 今回は、`Create a new virtual machine`を選択して`Next`ボタンをクリック
3. 仮想マシン名やインストールするOSバージョンを選択して`Next`ボタンをクリック
![VMware_ESXi_-_localhost_localdomain-createvm2.png](https://qiita-image-store.s3.amazonaws.com/0/10852/d31675d3-409e-d918-698b-22bc660e5d5a.png)
4. 仮想マシンをインストールするデータストアを選択して`Next`ボタンをクリック
![VMware_ESXi_-_localhost_localdomain-createvm3.png](https://qiita-image-store.s3.amazonaws.com/0/10852/2471ccc4-ee30-f13e-c6b8-b6e5187b3307.png)
5. 仮想マシンのハードウエア設定やオプションの設定変更して`Next`ボタンをクリック
![VMware_ESXi_-_localhost_localdomain-createvm4.png](https://qiita-image-store.s3.amazonaws.com/0/10852/10701233-20ce-73fb-4fdd-2996570d4e10.png)
6. 最後に設定内容を確認して`Finish`をクリック
 ![VMware_ESXi_-_localhost_localdomain-createvm5.png](https://qiita-image-store.s3.amazonaws.com/0/10852/c61d1fc4-bb6d-203b-6739-f3ec13628ec3.png)
7. 空の仮想マシンを作るだけなので、タスクを見ても一瞬で完了しています
![VMware_ESXi_-_localhost_localdomain6.png](https://qiita-image-store.s3.amazonaws.com/0/10852/4259a49e-446c-0088-4f56-302c3bda30e5.png)

## 仮想マシンコンソールをプラグイン無しで開く(HTML5クライアント)
1. 空の仮想マシンへOSをインストールしていくのですが、仮想マシンを右クリックして`Console`メニューから`Open browser console`を選択してクリックします
![VMware_ESXi_-_localhost_localdomain1.png](https://qiita-image-store.s3.amazonaws.com/0/10852/7fc3a60d-4bed-d23b-3c15-ab27b260a7be.png)
2. するとブラウザの中で、オーバーレイした形でコンソールが立ち上がります（Web Clientみたいにプラグインを入れる必要無し！※再掲）
![VMware_ESXi_-_localhost_localdomain2.png](https://qiita-image-store.s3.amazonaws.com/0/10852/a6ffb183-6215-5378-a247-2b36db0d8a76.png)
3. あとはISO等でOSイメージをマウントしてOSインストールが出来ます

一旦ここまで

# 既知の問題
最後の最後に重大な問題について共有します。
[ESXi Embedded Host Client](https://labs.vmware.com/flings/esxi-embedded-host-client)のサイトから、Know Issuesの部分を抜粋して持ってきました。

> * Known Issues
>     * On ESXi hosts which are assigned a VMware vSphere Hypervisor license, all modification operations will fail silently. We are working on a solution to this issue.
>     * On ESXi hosts which have a sub-domain name with large, shared cookies a web console session may fail to initialize. A workaround is to clear cookies or run the host client in an incognito-type window.
>     * For ESXi 5.5U2 and prior, and ESXi 6.0 hosts upgraded from any 5.5U2 or prior version, you will get a 503 error returned after visiting https://<esxhost>/ui/. To resolve this issue, please remove the line starting with /ui from /etc/vmware/rhttpproxy/endpoints.conf and restart rhttpproxy with /etc/init.d/rhttpproxy restart
>     * For ESXi 5.5 hosts, in-browser consoles are not supported. Please use VMRC to access guest VM consoles.
>     * For ESXi 5.5U2 and prior hosts, you must ensure to append a trailing / (forward slash) to the URL after /ui. The URL must be https://<esxhost>/ui/
>     * For some Windows guests, sending Ctrl-Alt-Del does not work.

1行目に思いっきり書いてある通り、現時点で **無償版のVMware vSphere Hypervisor licenseでは使えない** という問題があります。　　
ちなみにVMware vSphere Hypervisor licenseを入れると下記の様に殆どの操作でエラーが出ます。。。
![VMware_ESXi_-_localhost_localdomain_License_error.png](https://qiita-image-store.s3.amazonaws.com/0/10852/ff642ff7-9aac-1929-41c5-1af79e64ceea.png)
とりあえず`Evaluation Mode`の期間で検証してくださいという事ですね。　
この点が改善されるまでは [VMware ESXiをSSHでがんばるぞい(コマンドライン操作色々)](http://qiita.com/binzume/items/096ce77f73b6e853c342) の方が自由度は高そうですね。
とは言え、Know Issuesの文面的には、この問題は改善される様なので期待しています。

# さいごに
自分が「これは良いな」と思うポイントは下記の通りです。

1. 動作が機敏
    * 特に右クリックの追従速度はvSphere Clinet(C#)と遜色ないんじゃないでしょうか
2. プラグイン不要なコンソール接続
    * プラグインが起動してくるのを待つ必要も無く、コンソール接続までのタイムラグがほぼ無い点で考えるとvSphere Clinet(C#)すら越えているかと思います
3. プラグイン不要なOVF/OVAデプロイ
    * Web Clientのプラグインはブラウザがバージョンアップすると暫く使えなくなったりするので、直感的に使えて良いなと感じました

他にもWeb Clientには無くてESXi Embedded Host Clientには有るユニークな機能等ありますが（当然逆も沢山あります）それは各自お試しください。

個人的には、Flex(Flash)で書かれているWeb ClientよりもHTML5を中心に書かれているESXi Embedded Host Clientの方が好きなので、このままWeb Clientも飲み込んで欲しいなと思っています。

# 参考文献
* [ESXi Embedded Host Client](https://labs.vmware.com/flings/esxi-embedded-host-client)
* [VMware Fusion 7 Pro を使って VMware ESXi 5.5 Update2 のテスト環境を構築する（Nested ESXi）](http://qiita.com/ysaotome/items/00bacd38cae8e250fed5)
* [OS X 11.11 El Capitanでターミナル環境を整える (Homebrew+zsh+tmux+vim)](http://qiita.com/ysaotome/items/5bdd0de6bd339392c78f)
* [VMware ESXiをSSHでがんばるぞい(コマンドライン操作色々)](http://qiita.com/binzume/items/096ce77f73b6e853c342)