vmware powercli: tareas programadas

Para ejecutar un script de powercli mediante el programador de tareas, es necesario prepararlo para poder ser invocado desde powershell.

El script debe comenzar invocando el snapin de vmware:

add-pssnapin VMware.VimAutomation.Core

Antes de pasar a una tarea programada, recomendamos probar el script invocandolo a través de powershell:

powershell.exe c:\myscript.ps1

Tarea programada en windows

Herramientas administrativas > Programador de tareas

vmware_powercli_tarea_programada001

Tarea básica: Hora y fecha de comienzo.

vmware_powercli_tarea_programada002

Acción: Iniciar un programa
vmware_powercli_tarea_programada003Poner ruta de powershell y del script de powercli completa:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

 

powercli_tarea_programada_64bits

Vmware vcenter migration. The operation is not allowed in the current state .

Despite having DRS enabled on our vmware cluster, we are unable to migrate virtual machines.

Every migration ends with the following error:

The operation is not allowed in the current state .
vmware_esx_error_migracion001

Thist issue occurs not only when using powercli, but also when manually trying to migrate:

$vm | move-VM -Datastore  $datastore -Destination $vmhost

If you check the host configuration (summary tab),  vmotion state is set as “No”, though  Host license is Enterprise plus.

vmware_esx_error_migracion002

Step 1: Restart licencse service in vcenter
vcenter:~ # /etc/init.d/vmware-cis-license restart
Stopping VMware CIS License Service...
Stopped VMware CIS License Service.
Starting VMware CIS License Service...
Waiting for VMware CIS License Service..................
running: PID:4108
Step 2: Disconnect and reconnect host.

When a disconnection and reconnection is performed, licence information is read, and vmotion host configuration will be re-enabled.

Vmware: Instalación de parches de servidor

VMWare ESXi
VMWare ESXi

Instalación de parches con powershell

Es necesario descargar el parche en local, y descomprimirlo.

Connect-ViServer host1.myorg.org
$host | Install-VMHostPatch -LocalPath ESXi550-201502001/metadata.zip

Instalación de parches por ssh

Activar ssh vía cli

$host = Start-VMHostService -HostService ($_ | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } )

Vía ssh:

vim-cmd hostsvc/maintenance_mode_enter
esxcli software vib install -d "/var/tmp/ESXi550-201502001.zip"
esxcli software vib list
vim-cmd hostsvc/maintenance_mode_enter

Power cli: script para mover máquinas virtuales de datastore

VMWare ESXi
VMWare ESXi

Utilizando powershell, podemos hacer un pequeño script que nos libere un datastore completo, moviendo las máquinas virtuales que residen en él a una nueva ubicación.

Además,  desmontamos las vmware tools, si están montadas, como indican en las communities de vmware.

Function migrate_ds  ([string] $old_ds, [string] $new_ds)
{            $vms = Get-VM -Datastore $old_ds
            foreach ($vm in $vms) {  
                    # unmount tools and clean cd drive 
                    $vm | Get-CDDrive | where { $_.IsoPath -or $_.HostDevice -or $_.RemoteDevice } | Set-CDDrive -NoMedia -Confirm:$false
                    $vm  | move-VM -Datastore $new_ds
            
            }
}

migrate_ds my_old_ds my_new_ds

Actualizar vcenter vsca 5.5.0a a vcenter 5.5.0b

Cuando estábamos resignados a reinstalar, vmware nos ha dado una alegría: ¡VSCA se puede actualizar desde paquetes a través del interfaz web!

Ni está muy claro en la página de vmware, ni en la guía está entre los procedimientos de actualizacion. Sin embargo en el blog de vpros sí hacían referencia a ello.

  1. Crear un clon de vcenter
  2. Entrar por la interfaz de administración:
    https://vcenter:5480/#update.Status

  1. Aplicar el parche.

Vmware powercli: Scripts útiles

Los scripts aquí definidos están para descargar en github.

Activar y desactivar de forma masiva ssh en los hosts

Desde la 4.1, se puede activar ssh, sin necesidad de entrar por las ilos de los servidores.

Es importante el -Confirm $false, por que si no , pregunta 100 veces.

Nos hemos basado en esta utilísima entrada de techshifter

Get-Cluster | Foreach {
$cl=$_
Get-Cluster -name $cl | Get-VMHost | Foreach {
# Start-VMHostService -HostService ($_ | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } )
# Stop-VMHostService -HostService ($_ | Get-VMHostService | Where { $_.Key -eq "TSM-SSH" } ) -Confirm:$false
}
}

Activar snmp de forma masiva en todos los nodos

Este script es algo más complicado, porque es necesario iniciar sesión contra el servidor vcenter, y depués contra cada uno de los hosts.

vmware vcenter 5.5.0a: El inventario deja de actualizarse en el cliente web

Ya nos ha pasado 2 veces. Después de unos 30 días, el inventario de vmware deja de actualizarse a nivel del cliente web. Se nota mucho porque:

  1. El panel de tareas se queda congelado con tareas antiguas y no se refrescan
  2. Las máquinas virtuales se quedan asignadas a hosts en los que ya no están (tras drs) y no se puede acceder a ellas. Al abrir la consola da un error: “you have no privileges to view this object or it does not exist”.

Ya hay un hilo reportando este problema en las communities, también hemos escrito la resolución allí.

Tambien Gabesvirutalworld, lo ha reportado para la versión 5.1.

Solución

Con un caso de soporte con vmware, nos han dado la solución para este problema.  Hay distintos comandos para versiones anteriores de vmware a los que también les pasa este problema:

service vmware-inventoryservice stop
# Remove stored data:
rm -rf /storage/db/inventoryservice/data
/usr/lib/vmware-vpx/inventoryservice/scripts/ds-invoke.sh -Dvim.logdir=/var/log/vmware/vpx/inventoryservice com.vmware.vim.dataservices.CreateDb /storage/db/inventoryservice/data changeme default changeme
service vmware-inventoryservice start
vcenterhost=vchost.mydomain.com
/usr/lib/vmware-vpx/inventoryservice-registration/vcregtool.sh -Dvim.logdir=/var/log/vmware/vpx/inventoryservice-registration com.vmware.vim.dataservices.vcregtool.RegisterVC -action register -lookupserviceurl https://$vcenterhost:7444/lookupservice/sdk -isurl https://$vcenterhost:10443 -vcurl https://$vcenterhost/sdk/vimService -vccert /etc/vmware-vpx/ssl/rui.crt -vcprivkey /etc/vmware-vpx/ssl/rui.key -vcinstancecfg /etc/vmware-vpx/instance.cfg -vcendpointsdir /usr/lib/vmware-vpx/endpoints -vcextensionsdir /usr/lib/vmware-vpx/extensions
service vmware-vpxd restart

En nuestro caso, el servidor tiene dos nombres hacia fuera: vcenter y vspherecsl. Por ello, fue necesario también añadir en el /etc/hosts, una entrada con la IP externa y con el segundo nombre de servidor

En /var/log/vmware/vpx/inventoryservice/ds.log teníamos este mensaje:


inherited from com.vmware.vim.binding.vim.fault.InvalidLogin: Cannot complete login due to an incorrect user name or password.

Fue necesario editar el fichero hosts, y poner el segundo nombre dns de la máquina. Ignoro porqué había funcionado hasta entonces.

vcenter:~ # cat /etc/hosts
127.0.0.1  vcenter.domain.com vcenter localhost
external-ip vspherecsl.domain.com vspherecsl