HCIBench の OVA を PowerCLI でデプロイする。

HCIBench の OVA を PowerCLI でデプロイする。

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 で指定していきます。

hci-bench-powercli-deploy-00.png

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 ブラウザでアクセスして・・・

hci-bench-powercli-deploy-01.png

HCIBench の Web UI での設定にすすみます。

hci-bench-powercli-deploy-02.png

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 でデプロイしてみる話でした。

Version history
Revision #:
1 of 1
Last update:
‎03-13-2018 07:11 AM
Updated by: