URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

ゲスト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系のものをグループへ追加しています。このあたりの条件はクラスターが複数ある場合とか環境によって要調整。

 なんか他にいい方法あるのかな。