| Works
ゲストOSを識別してVMware DRSの仮想マシングループに追加するスクリプト
お仕事の備忘録です。
仮想環境のリソースを効率的に利用するため、ハイパーバイザー上のゲストOSを揃えた方がよいケースがあります。
VMware DRSが有効になっている環境では、ある仮想マシンを特定のホストに集めたい場合はアフィニティルールを使うのが一般的です。自分が作った仮想マシンなら自分で設定を入れればいいのですが、ユーザーセルフのプライベートクラウドなんかだとそうもいきません。
そのためタスクスケジューラ等で定期的にスクリプトを実行し、各VMのゲストOSを識別して対応する仮想マシングループに追加していくことにしました。
前提として、vCenter Serverからクラスタを作成してVMware DRSを「完全自動化」で有効にします。さらに、仮想マシングループとホストグループ作成し、それを紐付けるアフィニティルールまで設定しておきます。
スクリプトを実行すると、ゲストOSを判別して仮想マシンをあらかじめ作っておいたグループへ追加します。スクリプトがやるのはそこまでで、あとはVMware DRSの動作に任せます。
$TargetCluster = "Cluster-Name"
$TargetGroup = "VM-Group-Name"
$VcSv = "vcenter.vsphere.local"
$VcUser = "administrator@vsphere.local"
$VcPass = "password"
Import-Module VMware.PowerCLI
Connect-VIServer -Server $VcSv -User $VcUser -Password $VcPass
$PowerOnVms = Get-VM | Where-Object { $_.PowerState -eq "PoweredOn" }
Foreach ($TargetVm in $PowerOnVms) {
if ($TargetVm.GuestID -match "windows.*") {
Get-Cluster -Name $TargetCluster | Get-DrsClusterGroup -Name $TargetGroup | Set-DrsClusterGroup -VM $TargetVm -Add
}
}
Disconnect-VIServer -Server $VcSv -Confirm:$False
今回はパワーオン状態の仮想マシンを対象に、ここからゲストOSがWindows系のものをグループへ追加しています。このあたりの条件はクラスターが複数ある場合とか環境によって要調整。
なんか他にいい方法あるのかな。