PowerCLI を利用して、vSAN 6.7 の Witness Appliance をデプロイしてみます。
今回の環境。
vSAN Witness Appliance をデプロイする vCenter と、
登録する(vSAN クラスタを構成する)vCenter は別にしています。
- vSAN Witness Appliance 6.7
https://my.vmware.com/jp/web/vmware/details?downloadGroup=WITNESS-OVA-67&productId=745 - デプロイ先 vCenter : vc-sv01.go-lab.jp(vCenter 6.5 U1)
- 登録先 vCenter : vc-sv01.go-lab.jp(vCenter 6.7)
- PowerCLI 10.0.0 / PowerShell 5.1 / Windows 10
vSAN Witness Appliance のデプロイ。
まず vCenter に接続します。
PowerCLI> Connect-VIServer vc-sv01.go-lab.jp
今回は、vSAN 6.7 の Witness Appliance の ova ファイル
(VMware-VirtualSAN-Witness-6.7.0-8169922.ova)をデプロイします。
PowerCLI> $ovf_config = Get-OvfConfiguration -Ovf E:\VMware\VMware-VirtualSAN-Witness-6.7.0-8169922.ova
入力するパラメータは、下記のような感じです。
PowerCLI> $ovf_config
=============================================================
OvfConfiguration: VMware-VirtualSAN-Witness-6.7.0-8169922.ova
Properties:
-----------
DeploymentOption
NetworkMapping
vsan
PowerCLI> $ovf_config.DeploymentOption
Key : DeploymentOption
Value :
DefaultValue : normal
OvfTypeDescription : string["tiny", "normal", "large"]
Description : Tiny (10 VMs or fewer)
Configuration for Tiny vSAN Deployments with 10 VMs or fewer
* 2 vCPUs
* 8GB vRAM
* 1x 12GB ESXi Boot Disk
* 1x 15GB Magnetic Disk
* 1x 10GB Solid-State Disk
* Maximum of 750 Witness Components
Medium (up to 500 VMs)
Configuration for Medium vSAN Deployments of up to 500 VMs
* 2 vCPUs
* 16GB vRAM
* 1x 12GB ESXi Boot Disk
* 1x 350GB Magnetic Disk
* 1x 10GB Solid-State Disk
* Maximum of 22K Witness Components
Large (more than 500 VMs)
Configuration for Large vSAN Deployments of more than 500 VMs
* 2 vCPUs
* 32GB vRAM
* 1x 12GB ESXi Boot Disk
* 3x 350GB Magnetic Disks
* 1x 10GB Solid-State Disk
* Maximum of 45K Witness Components
PowerCLI> $ovf_config.NetworkMapping | fl
Management_Network :
Witness_Network :
PowerCLI> $ovf_config.vsan.witness.root.passwd
Key : vsan.witness.root.passwd
Value :
DefaultValue :
OvfTypeDescription : password(7..)
Description : Set password for root account.
A valid password must be at least 7 characters long and must contain a mix
of upper and lower case letters, digits, and other characters. You can use
a 7 character long password with characters from at least 3 of these 4
classes. An upper case letter that begins the password and a digit that
ends it do not count towards the number of character classes used.
パラメータを設定します。デプロイします。
今回は、直接接続の 2 ノード vSAN にする想定として、
vSAN Witness Appliance の Management / vSAN トラフィックは vmk0 ポートを併用します。
ここでは Management_Network / Witness_Network 両方に同じポートグループを指定していますが、
vmk1 を接続する vNIC は、後で切断状態にしてしまいます。
PowerCLI> $ovf_config.vsan.witness.root.passwd.Value = "パスワード"
PowerCLI> $ovf_config.NetworkMapping.Management_Network.Value = "dvpg-vds01-vlan-0000"
PowerCLI> $ovf_config.NetworkMapping.Witness_Network.Value = "dvpg-vds01-vlan-0000"
PowerCLI> $ovf_config.DeploymentOption.Value = "tiny"
Import-VApp でデプロイします。オプションは下記のようにしています。
- VM 名: hv-n23w ※Nested ESX の VM。
- デプロイ先の ESXi: hv-i21.go-lab.jp
- デプロイ先データストアも vSAN ※ただし今回の vSAN とは別。
- デプロイ先のフォルダ: test
PowerCLI> Import-VApp -Name hv-n23w -OvfConfiguration $ovf_config -Source $ovf_config.Source -VMHost hv-i21.go-lab.jp -Datastore vsanDatastore-01 -StorageFormat Thin -InventoryLocation (Get-Folder -Type VM test)
今回は2つ目の vNIC を使用しないので、切断状態にしておきます。
PowerCLI> Get-VM hv-n23w | Get-NetworkAdapter -Name "Network adapter 2" | Set-NetworkAdapter -StartConnected:$false -Confirm:$false
VM を起動します。
PowerCLI> Get-VM hv-n23w | Start-VM
ゲスト OS の ESXi が起動するまで待ちます。
PowerCLI> Get-VM hv-n23w | Get-VMGuest | ft -AutoSize State,OSFullName,IPAddress
State OSFullName IPAddress
----- ---------- ---------
Running VMware ESXi 6.5 {192.168.1.42, fe80::250:56ff:fe8a:1896, 2400:4030:8c62:5400:250:56ff:fe8a:1896, fe80::250:5...
vSAN Witness Appliance のネットワーク設定。
vCenter に登録する準備として、ネットワーク設定をします。
通常は vSAN Witness Appliance の VM コンソールを開いて DCUI から設定しますが、
ここでは、前回の投稿でのスクリプトを利用して設定してみます。
PowerCLI から Nested ESXi の esxcli を実行してみる。(GuestProcessManager)
vCenter に接続していない場合は、あらかじめ接続した状態でスクリプトを実行します。
PowerCLI> Connect-VIServer vc-sv01.go-lab.jp -Force
PowerCLI> .\invoke_nested-esxcli.ps1 system hostname set --host hv-n23w --domain go-lab.jp -ESXiVM:hv-n23w -ESXiUser:root -ESXiPass:パスワード
PowerCLI> .\invoke_nested-esxcli.ps1 network ip interface ipv4 set --interface-name=vmk0 --type=static --ipv4=192.168.1.217 --netmask=255.255.255.0 --gateway=192.168.1.1 -ESXiVM:hv-n23w -ESXiUser:root -ESXiPass:パスワード
少し待つと、VMware Tools から取得した情報でも設定が反映されたことが分かります。
PowerCLI> Get-VM hv-n23w | Get-VMGuest | fl HostName,IPAddress
HostName : hv-n23w.go-lab.jp
IPAddress : {192.168.1.217, fe80::250:56ff:fe8a:1896, 2400:4030:8c62:5400:250:56ff:fe8a:1896, 169.254.80.14...}
疎通確認をしておきます。
PowerCLI> Test-Connection -Quiet 192.168.1.217
True
PowerCLI> ping 192.168.1.217
192.168.1.217 に ping を送信しています 32 バイトのデータ:
192.168.1.217 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.217 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.217 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.217 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.1.217 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms
PowerCLI>
いったん、PowerCLI をデプロイ先の vCenter から切断します。
PowerCLI> Disconnect-VIServer -Confirm:$false
vSAN Witness Appliance の vCenter 登録。
vSAN Witness Appliance を登録します。
vSAN クラスタをセットアップする予定の vCenter に接続します。
PowerCLI> Connect-VIServer vc-sv02.go-lab.jp -Force
vSAN Witness Appliance は、通常の ESXi と同様に vCenter に登録します。
vCenter インベントリのデータセンタ(dc02)は既に作成してあります。
ESXi の root ユーザ / デプロイ時に指定したパスワード でログインします。
PowerCLI> Get-Datacenter -Name dc02 | Add-VMHost -Name hv-n23w.go-lab.jp -Force
検証しやすいように、SSH を有効化 / サービス起動してしまいます。
PowerCLI> $hv = Get-VMHost hv-n23w.go-lab.jp
PowerCLI> $hv | Get-VMHostService | where {$_.key -eq "TSM-SSH"} | Set-VMHostService -Policy On -Confirm:$false
PowerCLI> $hv | Get-VMHostService | where {$_.key -eq "TSM-SSH"} | Start-VMHostService
DNS Server のアドレスを設定しておきます。
ここでは 192.168.1.254, 192.168.1.253 の 2台を参照するように設定しています。
PowerCLI> $hv | Get-VMHostNetwork | Set-VMHostNetwork -DnsAddress 192.168.1.254,192.168.1.253
vmk0 の vSAN タグを有効にしておきます。
PowerCLI> Get-VMHost hv-n23w.go-lab.jp | Get-VMHostNetworkAdapter -Name vmk0 | Set-VMHostNetworkAdapter -VsanTrafficEnabled:$true -Confirm:$false
vmk1 の IP アドレス、vSAN タグを無効化しておきます。
PowerCLI> Get-VMHost hv-n23w.go-lab.jp | Get-VMHostNetworkAdapter -Name vmk1 | Set-VMHostNetworkAdapter -IP 0.0.0.0 -SubnetMask 255.255.255.255 -VsanTrafficEnabled:$false -Confirm:$false
VMkernel ポートが設定変更されました。
PowerCLI> Get-VMHost hv-n23w.go-lab.jp | Get-VMHostNetworkAdapter -VMKernel | ft -AutoSize Name,PortGroupName,VsanTrafficEnabled,IP,SubnetMask
Name PortGroupName VsanTrafficEnabled IP SubnetMask
---- ------------- ------------------ -- ----------
vmk0 Management Network True 192.168.1.217 255.255.255.0
vmk1 witnessPg False
このあと vSAN クラスタをセットアップする際に、ここまでセットアップしてきた
vSAN Witness Appliance を vSAN 監視ホストとして指定します。
vSAN クラスタの設定でも PowerCLI を利用することができます。
PowerCLI で vSAN セットアップをためしてみる。(2 Node 版)
そして工夫次第で vSAN Witness Appliance ~ vSAN セットアップまで
PowerCLI スクリプトで自動化できたりします。
以上、PowerCLI で vSAN Witness Appliance をセットアップしてみる話でした。