ここまで、PowerCLI を利用したネステッド vSAN 環境セットアップの工夫を紹介してきました。

今回は、ここまでのコマンドラインを利用したスクリプトによるデプロイ簡素化についてです。

 

これまでの話については下記をどうぞ。

図解 ネステッド vSAN ラボ。

ネステッド vSAN ラボを構築するための工夫 Part.1。(物理 マシン ESXi ~ VCSA デプロイ)

ネステッド vSAN ラボを構築するための工夫 Part.2。(物理マシン ESXi と ESXi VM の準備)

ネステッド vSAN ラボを構築するための工夫 Part.3。(vSAN クラスタ構築)

 

今回のサンプルスクリプトは、下記に配置しました。

GitHub - gowatana/deploy-1box-vsan

 

vSAN 環境の初期化。

まず、ここまでで下記のような vSAN 環境をセットアップしてあります。

vsan-1box-5-1.png

 

はじめに、再度デプロイをためすために、一度環境を初期化します。

前回に引き続き、PowerCLI は Connect-VIServer で vCenter に接続したままの状態です。

 

今回の vSAN クラスタ名と、ESXi VM の名前は下記です。

$cluster_name = "vSAN-Cluster"

$vm_name = "vm-esxi-??"

 

vSAN クラスタにある ESXi をすべて削除して、クラスタも削除します。

今回はラボを初期化してしまうので、ESXi はメンテナンスモードなどにはせず

切断 → インベントリから削除 としています。

$cluster = Get-Cluster $cluster_name

$cluster | Get-VMHost | Set-VMHost -State Disconnected -Confirm:$false

$cluster | Get-VMHost | Remove-VMHost -Confirm:$false

$cluster | Remove-Cluster -Confirm:$false

 

ESXi VM も削除します。

Get-VM $vm_name | Stop-VM -Confirm:$false

Get-VM $vm_name | Remove-VM -DeletePermanently -Confirm:$false

 

これで、vCenter のインベントリから、ネステッド vSAN 環境が削除されます。

vsan-1box-5-2.png

 

vSAN 環境のデプロイ。(スクリプト簡素化版)

それでは、スクリプトでデプロイしてみます。

 

設定情報については、できるだけスクリプトから分離したいので

下記のようなファイルを作成しました。

 

config_vSAN-Cluster-01.ps1

# Lab Global Setting.

$base_vc_address = "192.168.1.30"

$base_vc_user = "administrator@vsphere.local"

$base_vc_pass = "VMware1!"

 

 

 

$nest_vc_address = "192.168.1.30"

$nest_vc_user = "administrator@vsphere.local"

$nest_vc_pass = "VMware1!"

 

$domain = "go.lab.jp"

$hv_ip_prefix_vmk0 = "192.168.1."

$hv_subnetmask = "255.255.255.0" # /24

$hv_gw = "192.168.1.1"

$dns_1 = "192.168.1.101"

$dns_2 = "192.168.1.102"

$hv_user = "root"

$hv_pass = "VMware1!"

 

# Base ESXi Setting

$template_vm_name = "vm-esxi-template-01"

$hv_name = "192.168.1.20"

$base_hv_name = "192.168.1.20"

 

# Cluster setting

$vm_num_start = 1

$vm_num_end = 3

$cluster_name = "vSAN-Cluster-01"

 

# vSAN Disk setting

$vsan_cache_dev = "mpx.vmhba0:C0:T1:L0"

$vsan_capacity_dev = "mpx.vmhba0:C0:T2:L0", "mpx.vmhba0:C0:T3:L0"

 

# VM / ESXi List

$nest_hv_hostname_prefix = "esxi-"

$vm_name_prefix = "vm-esxi-"

 

$vm_name_list = $vm_num_start..$vm_num_end | % {

    $i = $_

    $vm_name_prefix + $i.toString("00")

}

 

$nest_hv_hostname_list = $vm_num_start..$vm_num_end | % {

    $i = $_

    $nest_hv_hostname_prefix + $i.toString("00")

}

 

$hv_ip_vmk0_list = $vm_num_start..$vm_num_end | % {

    $i = $_

    $hv_ip_prefix_vmk0 + (30 + $i).ToString()

}

 

$vc_hv_name_list = $vm_num_start..$vm_num_end | % {

    $i = $_

    $hv_ip_prefix_vmk0 + (30 + $i).ToString()

}

 

下記のようにコマンドライン1行でデプロイできます。

(ただし、今回の対象は ESXi VM 作成以降の部分です)

PowerCLI> ./setup_vSAN-Cluster_AllFlash.ps1 ./config_vSAN-Cluster-01.ps1

 

スクリプトからの出力表示は粗いままですが・・・

vsan-1box-5-3.png

 

下記のように、前回までにデプロイした vSAN と同様の環境がセットアップできます。

vsan-1box-5-4.png

 

今回は SSD 上でのネステッド環境ですが、

ハイブリッド構成にみせかけてネステッド vSAN をセットアップすることもできます。

PowerCLI> ./setup_vSAN-Cluster_Hybrid.ps1 ./config_vSAN-Cluster-02.ps1

vsan-1box-5-5.png

 

vSAN 環境の初期化。(スクリプト簡素化版)

冒頭に実施した vSAN 環境の初期化もスクリプト化しておくと、

下記のように再構築も簡素化できます。

PowerCLI> ./destroy_vSAN-Cluster.ps1 ./config_vSAN-Cluster-01.ps1

PowerCLI> ./destroy_vSAN-Cluster.ps1 ./config_vSAN-Cluster-02.ps1

 

以上、ネステッド vSAN 環境構築の簡素化についてでした。