virshでESXi6への接続を確認してみた

#内容
PacemakerをESXi環境(もしくは、vSphere環境)のゲスト上に構築する場合、ゲスト間のStonithはvirsh(external/libvirt)を利用したESXiホスト経由もしくは、vCenterサーバ経由での実行になります。
某社での質問を契機に、気になったので最新のESXi6単体(vSphere環境ではなくHyperVisor単体です）で、virsh接続が可能なのか確認してみました。
実は、Pacemaker1.1では、virshを経由しないfence_vmware_soapというエージェントも利用出来ますが、今回は未確認です。

　実はネットを探すとlibvirtの古いバージョンでNGな為、対応版のlibvirtを利用する必要があることはわかります。（記載のあったBugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1213345)
　また、記憶が正しければ、この対応されたバージョンは5.5系のEsxに接続出来なくなったような記載があったような・・・最新では治っていると思います・・・

以下にように、RHEL7系と、Fedora23で確認してみました。

* RHEL7.1及びCentOS7.1からのESXi6ホストへの接続は6系への接続はNG
 * 以下では、RHEL7.1のみを記載していますが、CentOS7.1も同様にNGでした。
 * RHEL7.1は未アップデート、CentOS7.1はアップデート済みでした。

```
root@rh71-01 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.1 (Maipo)
[root@rh71-01 ~]# virsh -c esx://192.168.3.200/?no_verify=1
192.168.3.200 [root] のユーザー名を入力してください: root
root の 192.168.3.200 のユーザー名を入力してください: 
エラー: ハイパーバイザーへの接続に失敗しました
エラー: 内部エラー: VI API メジャー/マイナーバージョン '2.5', '4.x' または '5.x' が期待されますが、'6.0' が見つかりました

[root@rh71-01 ~]# virsh -V
libvirt の virsh コマンドラインツール 1.2.8
http://libvirt.org/ にあるウェブサイトを参照してください。

以下のサポート付きでコンパイルされました:
ハイパーバイザー: QEMU/KVM LXC ESX Test
ネットワーク: Remote Network Bridging Interface netcf Nwfilter VirtualPort
ストレージ: Dir Disk Filesystem SCSI Multipath iSCSI LVM Gluster
その他: Daemon Nodedev SELinux Secrets Debug DTrace Readline Modular

```

* Fedora23からESXi6ホストへの接続はOK - 若干、新しいlibvirtが使われているのでOKのようです。
 * Fedora23はアップデート済みです。

```
[root@Q1900itx ~]# virsh -V
libvirt の virsh コマンドラインツール 1.2.18.1
http://libvirt.org/ にあるウェブサイトを参照してください。

以下のサポート付きでコンパイルされました:
ハイパーバイザー: QEMU/KVM LXC UML Xen LibXL OpenVZ VMWare PHYP VirtualBox ESX Hyper-V Test
ネットワーク: Remote Network Bridging Interface netcf Nwfilter VirtualPort
ストレージ: Dir Disk Filesystem SCSI Multipath iSCSI LVM RBD Gluster
その他: Daemon Nodedev SELinux Secrets Debug DTrace Readline Modular
[root@Q1900itx ~]# virsh -c esx://192.168.3.200/?no_verify=1
192.168.3.200 [root] のユーザー名を入力してください: root
root の 192.168.3.200 のユーザー名を入力してください: 
virsh にようこそ、仮想化対話式ターミナルです。

入力: 'help' コマンドのヘルプ
      'quit' 終了

virsh # version
コンパイル時に使用したライブラリ: libvirt 1.2.18
使用中のライブラリ: libvirt 1.2.18
使用中の API: ESX 1.2.18
実行中のハイパーバイザー: ESX 6.0.0
```

なお、vpx指定によるvCenter接続は未確認です。
こちらは、機会があれば確認してみたいと思っています。

また、利用するvirshはESX対応で構築されている必要があります。
利用する場合には、-Vオプションで、ESXが表示されることを確認してください。

```
(Ubuntu14.04のvirshはESX対応で構築されていないようですので、接続を試すことすらNGでした。)

yamauchi@Q2900-itx:~$ virsh -V
libvirt の virsh コマンドラインツール 1.2.2
http://libvirt.org/ にあるウェブサイトを参照してください。

以下のサポート付きでコンパイルされました:
 ハイパーバイザー: QEMU/KVM LXC UML Xen LibXL OpenVZ VMWare VirtualBox Test
 ネットワーク: Remote Network Bridging Interface netcf Nwfilter VirtualPort
 ストレージ: Dir Disk Filesystem SCSI Multipath iSCSI LVM RBD Sheepdog
 その他: Daemon Nodedev AppArmor Secrets Debug Readline Modular

yamauchi@Q2900-itx:~$ virsh -c esx://192.168.3.200/?no_verify=1
エラー: ハイパーバイザーへの接続に失敗しました
エラー: サポートされない設定: libvirt が 'esx' ドライバーなしでビルドされました

```

追加で、出たばかりのRHEL7.2（未アップデート）で確認してみましたが、OKでした。

```
[root@rh72-test ~]# virsh -V
libvirt の virsh コマンドラインツール 1.2.17
http://libvirt.org/ にあるウェブサイトを参照してください。

以下のサポート付きでコンパイルされました:
ハイパーバイザー: QEMU/KVM LXC ESX Test
ネットワーク: Remote Network Bridging Interface netcf Nwfilter VirtualPort
ストレージ: Dir Disk Filesystem SCSI Multipath iSCSI LVM RBD Gluster
その他: Daemon Nodedev SELinux Secrets Debug DTrace Readline Modular
[root@rh72-test ~]# virsh -c esx://192.168.3.200/?no_verify=1
192.168.3.200 [root] のユーザー名を入力してください: root
root の 192.168.3.200 のユーザー名を入力してください: 
virsh にようこそ、仮想化対話式ターミナルです。

入力: 'help' コマンドのヘルプ
      'quit' 終了

virsh # version
コンパイル時に使用したライブラリ: libvirt 1.2.17
使用中のライブラリ: libvirt 1.2.17
使用中の API: ESX 1.2.17
実行中のハイパーバイザー: ESX 6.0.0


```

なお、virshによる接続後の実際の電源操作(startなど)に関しては、無償版のESXi6では利用できないので注意してください。
Essential以上のライセンスが必要らしいです。

 - http://kb.cloudberrylab.com/kb1032/

```
[root@rh72-test ~]# virsh -c esx://xxx.xx.xx.xx/?no_verify=1
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # list --all 
 Id    Name                           State
----------------------------------------------------
 1     rh72-01                        running
 2     rh67-stone                     running
 -     rh72-02                        shut off

virsh # start rh72-02
error: Failed to start domain rh72-02
error: internal error: HTTP response code 500 for call to 'PowerOnVM_Task'. Fault: ServerFaultCode - Current license or ESXi version prohibits execution of the requested operation.

```

 
以上です。