Configurando DRS desde PoweCLI

Aporto algunas funciones para manipular la configuración de de un Clúster VMware DRS, los grupos y las reglas de afinidad.

drs_groupsImaginaros que queremos cambiar de forma masiva VMs de grupos de afinidad. Si queremos automatizar este proceso, nos podemos currar con VMware Orquestrator un workflow para el caso, tirando de funciones que vienen ya definidas y algo de javascript, o nos lo trabajamos con PowerCLI. Os paso algunas ideas para el segundo caso, a ver si les sacáis utilidad.

Lo primero que necesitamos, es importar un módulo que contiene todas las funciones. Os dejo el link donde está la última versión DRSRule

Extraemos el contenido en uno de los directorios de modulos de PowerCli. Para saber cuáles son estos directorios, desde PowerCLI ejecutamos $env:PSModulePath

PowerCLI C:\> $env:PSModulePath
 D:\Users\sean.torres\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Modules

Ahora ya podemos usar las funciones del módulo DRSRule, para ello lo importamos al principio del script y listo:

Add-PSSnapin VMware.VimAutomation.Core
Import-Module DRSRule

Podemos obtener ayuda sobre todas las funciones disponibles con Get-Help about_DRSRule

Os pongo un par de casos, para quitar y añadir VMs de los Grupos DRS. Necesitamos tener definidas las variables $VMS$CLUSTER, $DRS_Group_Origen, $DRS_Group_Destino:

#
# ---- Quitamos las vms del GrupoDRS Origen. Necesitamos borrar el grupo y crearlo de nuevo.
 $VMS_Origen_new = (Compare-Object $(get-content $VMS) $(Get-DrsVMGroup -Cluster $CLUSTER -Name $DRS_Group_Origen).VM).InputObject

Write-Host "Quitando VMs de GrupoDRS $DRS_Group_Origen..."
 Remove-DrsVMGroup -Cluster $CLUSTER -Name $DRS_Group_Origen -confirm:$false |out-null
 New-DrsVMGroup -Name $DRS_Group_Origen -VM $VMS_Origen_new -Cluster $CLUSTER |out-null

# ---- Añadimos las vms al GrupoDRS Destino
 Write-Host "Añadiendo VMs a GrupoDRS $DRS_Group_Destino..."
 foreach ($VM in (get-content $VMS)){
 $CLUSTER = Get-Cluster -VM $VM
 Get-DrsVMGroup -Cluster $CLUSTER -Name $DRS_Group_Destino | Set-DrsVMGroup -VM $VM -Append |out-null
 }
 # ---- Aplicar DRS Recomendation para que se muevan las VMs
 Get-DrsRecommendation -Cluster $CLUSTER -Refresh | Apply-DrsRecommendation | out-null
#

Gracias por compartir 😉

1 comment

Leave a Reply

Your email address will not be published. Required fields are marked *