HCIBench は vSAN などのテスト自動化をするためには便利です。
HCIBench
https://labs.vmware.com/flings/hcibench
しかし、複数のテストを並行させたり、複数の環境設定を保持したりといった使い方には
あまり向かないように感じます。実際にベンチマーク テストを実行する場合には、
テストの目的や利用者ごとに HCIBench 仮想アプライアンス(OVA)を
デプロイするケースがあると思います。
そこで、少しでもデプロイ作業を簡略化すべく、
PowerCLI で HCIBench の OVA をデプロイしてみました。
ちょうど HCIBench v1.6.6 が公開されたのでデプロイしてみます。
OVA ファイルは、HCIBench_1.6.6.ova を利用します。
今回使用するコマンドの PowerCLI モジュールはバージョン 10.0 のものです。
PowerCLI> Get-Command Get-OvfConfiguration,Import-VApp | select Name,Module,Version
Name Module Version
---- ------ -------
Get-OvfConfiguration VMware.VimAutomation.Core 10.0.0.7893909
Import-VApp VMware.VimAutomation.Core 10.0.0.7893909
コマンドライン実行での PowerCLI デプロイ。
Get-OvfConfiguration の実行のためには、まず vCenter に接続します。
「vc-sv01.go-lab.jp」は今回のデプロイ先 vCenter です。
PowerCLI> Connect-VIServer vc-sv01.go-lab.jp -Force
OVF を設定するための準備をします。
PowerCLI> $ovf_config = Get-OvfConfiguration -Ovf D:\VMware\HCIBench_1.6.6.ova
PowerCLI> $ovf_config
====================================
OvfConfiguration: HCIBench_1.6.6.ova
Properties:
-----------
Common
NetworkMapping
下記のようなパラメータが必要だとわかります。
PowerCLI> $ovf_config.Common
Public_Network_Gateway :
Public_Network_IP :
DNS :
Public_Network_Netmask :
Public_Network_Type :
System_Password :
PowerCLI> $ovf_config.NetworkMapping | fl
Public_Network :
Private_Network :
今回のデプロイで指定するオブジェクトが存在しているか、事前に確認しておきます。
対象のオブジェクトがあれば Ture、なければ False です。
必要に応じて、ESXi はメンテナンスモードが解除されているか、
他にも必要なオブジェクト(クラスタ、リソースプール、フォルダなど)が作成されているか
といった確認を追加するとさらに確実になります。
PowerCLI> Get-VMHost hv-d02.go-lab.jp -ErrorAction:SilentlyContinue | Out-Null; echo $?
True
PowerCLI> Get-VMHost hv-d02.go-lab.jp | Get-VirtualPortGroup -Name "VM Network" -ErrorAction:SilentlyContinue | Out-Null; echo $?
True
PowerCLI> Get-VMHost hv-d02.go-lab.jp | Get-VirtualPortGroup -Name "pg-vlan-1012" -ErrorAction:SilentlyContinue | Out-Null; echo $?
True
PowerCLI> Get-VMHost hv-d02.go-lab.jp | Get-Datastore ds_hv-d02_01 -ErrorAction:SilentlyContinue | Out-Null; echo $?
True
ここから、vSphere Web Client からのデプロイでは下記のように指定していたパラメータを
PowerCLI で指定していきます。
OVF のパラメータを設定します。
PowerCLI> $ovf_config.NetworkMapping.Public_Network.Value = "VM Network"
PowerCLI> $ovf_config.NetworkMapping.Private_Network.Value = "pg-vlan-1012"
PowerCLI> $ovf_config.Common.DNS.Value = "192.168.1.254"
PowerCLI> $ovf_config.Common.Public_Network_Gateway.Value = "192.168.1.1"
PowerCLI> $ovf_config.Common.Public_Network_IP.Value = "192.168.1.119"
PowerCLI> $ovf_config.Common.Public_Network_Netmask.Value = "255.255.255.0"
PowerCLI> $ovf_config.Common.Public_Network_Type.Value = "Static"
PowerCLI> $ovf_config.Common.System_Password.Value = "VMware1!"
パラメータがひととおり設定されたことを確認できます。
PowerCLI> $ovf_config.Common
Public_Network_Gateway : 192.168.1.1
Public_Network_IP : 192.168.1.119
DNS : 192.168.1.254
Public_Network_Netmask : 255.255.255.0
Public_Network_Type : Static
System_Password : VMware1!
PowerCLI> $ovf_config.NetworkMapping | fl
Public_Network : VM Network
Private_Network : pg-vlan-1012
OVA をデプロイします。
hci-bench02 という名前で、ESXi「hv-d02.go-lab.jp」のデータストア「ds_hv-d02_01」にデプロイします。
PowerCLI> Import-VApp -Name hci-bench02 -OvfConfiguration $ovf_config -Source $ovf_config.Source -VMHost hv-d02.go-lab.jp -Datastore ds_hv-d02_01 -StorageFormat Thin
デプロイが完了したら HCIBench を起動します。
PowerCLI> Get-VM hci-bench02 | Start-VM
Name PowerState Num CPUs MemoryGB
---- ---------- -------- --------
hci-bench02 PoweredOn 8 8.000
このあと、Web ブラウザでアクセスして・・・
HCIBench の Web UI での設定にすすみます。
Web UI からの設定は、vExpert の kawaman さんの投稿がとても参考になります。
https://community.emc.com/people/kawaman/blog/2017/12/17/hcibench-vsan-performancetest
デプロイ スクリプトのサンプル。
ここまでのコマンドラインをスクリプトにまとめておくと、
同環境や、類似した環境での 2度目以降のデプロイを簡略化できるようになります。
今回は、下記のようなスクリプトを作成してみました。
※自宅ラボむけに目的を絞って簡易的に作成しています。
deploy_hci-bench-ova.ps1 · GitHub
# HCIBench OVA Deploy Script.
#
# Public_Network_Type は "Static" で固定。
# vCenter に接続するが、デプロイ先は ESXi を指定する。
# Usage:
# PowerCLI> .\deploy_hci-bench-ova.ps1
# ------------------------------
# Setting
$ova_file_path = "D:\VMware\HCIBench_1.6.6.ova"
$vm_name = "hci-bench02"
$target_vc = "vc-sv01.go-lab.jp"
$target_esxi = "hv-d02.go-lab.jp"
$target_pg_public = "VM Network"
$target_pg_private = "pg-vlan-1012"
$target_datastore = "ds_hv-d02_01"
$public_network_ip = "192.168.1.119"
$public_network_netmask = "255.255.255.0"
$public_network_gateway = "192.168.1.1"
$dns = "192.168.1.254"
$ova_root_password = "VMware1!"
# ------------------------------
# connect VC & get OVF config.
Connect-VIServer $target_vc -Force
$ovf_config = Get-OvfConfiguration -Ovf $ova_file_path
# ------------------------------
# Pre Check
$pre_check = "ok"
$hv = Get-VMHost $target_esxi -ErrorAction:SilentlyContinue
$hv | Out-Null; echo $?
if($? -ne $true){"デプロイ先 ESXi を確認して下さい。"; $pre_check = "NG"}
$hv | Get-VirtualPortGroup -Name $target_pg_public -ErrorAction:SilentlyContinue | Out-Null; echo $?
if($? -ne $true){"デプロイ先 Public PG を確認して下さい。"; $pre_check = "NG"}
$hv | Get-VirtualPortGroup -Name $target_pg_private -ErrorAction:SilentlyContinue | Out-Null; echo $?
if($? -ne $true){"デプロイ先 Private PG を確認して下さい。"; $pre_check = "NG"}
$hv | Get-Datastore $target_datastore -ErrorAction:SilentlyContinue | Out-Null; echo $?
if($? -ne $true){"デプロイ先 Datastore を確認して下さい。"; $pre_check = "NG"}
if($pre_check -ne "ok"){"デプロイを実行せず終了します。"; exit 1}
# ------------------------------
# Configure & Deploy
$ovf_config.Common.Public_Network_Type.Value = "Static"
$ovf_config.NetworkMapping.Public_Network.Value = $target_pg_public
$ovf_config.NetworkMapping.Private_Network.Value = $target_pg_private
$ovf_config.Common.Public_Network_IP.Value = $public_network_ip
$ovf_config.Common.Public_Network_Netmask.Value = $public_network_netmask
$ovf_config.Common.Public_Network_Gateway.Value = $public_network_gateway
$ovf_config.Common.DNS.Value = $dns
$ovf_config.Common.System_Password.Value = $ova_root_password
Import-VApp -OvfConfiguration $ovf_config -Source $ovf_config.Source `
-Name $vm_name `
-VMHost $target_esxi `
-Datastore $target_datastore -StorageFormat Thin |
select Name,PowerState
Get-VM $vm_name | Start-VM | select Name,PowerState
Disconnect-VIServer $target_vc -Confirm:$false
そして、下記のように実行すると、以前のコマンドラインと同じデプロイが実施できます。
PowerCLI> .\deploy_hci-bench-ova.ps1
OVA のデプロイ作業の記録をテキスト形式で残せるようになるので、
作業内容の確認もしやすくなるかもしれません。
以上、HCIBench を PowerCLI でデプロイしてみる話でした。