Powercli: Configurar máquinas virtuales para que instalen tools en el inicio

A raíz del artículo de Brian Graf y de LucD sobre cambios de especificaciones de máquinas virtuales, hemos hecho un pequeño script configure_vmtools_power_cycle.ps1 capaz de marcar en las máquinas virtuales el atributo “tools upgrade”vmware.vmtools.upgrade.power.cycle

Se invoca desde powercli

.\configure_vmtools_power_cycle.ps1

Requiere configuración para definir en qué contenedor (Location) va a aplicar el cambio de políticas.

Para evitar que queden vmware tools montadas en los linux, sólo aplica el cambio sobre máquinas definidas como Windows y encendidas.

En la versión de powercli 5.5 que estamos trabajando, sólo está relleno el cambio vm.Guest.OsFullname si la máquina está encendida. En el caso de máquinas apagadas, no podemos discriminar por sistema operativo. Por ello, se ha puesto también la opción en la función de forzar la aplicación.

 

 
Function configure_vmtools_power_cycle ( $vm, [bool] $force )
{
       

   
    # Comment if you want to upgrade non windows vm
    if ((($vm.Guest.State -eq "PoweredOn") -and  ($vm.Guest.OSFullName.Contains("Windows")) -or ($force)))
        
       {
    
        write-host "Configure vmtools check and upgrade in every powercycle: " $vm.Name $vm.Guest.OSFullName

        # This line creates the object that encapsulates the settings for reconfiguring the VM
        $vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
        # This line creates the object we will be modifying
        $vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
        # This line sets the Tools upgrades policy checkbox
        $vmConfigSpec.Tools.ToolsUpgradePolicy = "UpgradeAtPowerCycle"
        # This line commits the change to each virtual machine
        # Get-View -ViewType VirtualMachine | %{    $_.ReconfigVM($vmConfigSpec)}
    
        # Reconfigure vm
        $vm | Get-View | %{ $_.ReconfigVM($vmConfigSpec)}
        
        
   }
 }

 

Vmware: Virtual distributed switch

vmware_vds1

Para evitar la configuración de red en cada uno de los hosts, vamos a configurar en forma de virtual distributed switch (VDS), frente a los virutal standard switch (VSS).

http://www.vmware.com/files/pdf/virtual_networking_concepts.pdf

Un VDS se configura a nivel de datacenter.

En el momento de la creación, hay que definir el número de uplinks que vamos a utilizar. Aunque se pueden definir a posteriori, es mejor crear el número definitivo de uplinks, y añadir los interfaces físicos (vmnic) al uplink definitivo.

Consideraciones pre-migración

  • Hemos verificamos que los hosts mantienen la configuración de red, a pesar de tener una desconexión en el vcenter.
  • Si, en estado de desconexión del vcenter, se hacen cambios sobre VDS, hay problemas al conectarlo de nuevo.
  • La configuración de VDS se hace a nivel de datacenter. Eso significa que para hosts en distintos clusters, tenemos disponibles VDS’s con vlan’s que no tienen visibilidad. El control para evitar tráfico de red indeseado (tráfico de extranet o dmz, en zona interna) recae directemente sobre la electrónica de red.
  • A la hora de dimensionar el número de VDS, requerimos uno por cada canal físico o agregado (trunk) de red.
  • Borrar uplinks es extremadamente difícil. Es mejor hacer el diseño con el número de uplinks desde el comienzo de la definición del VDS.

Hosts y VDS

En un VDS, se pueden añadir o quitar hosts físicos.

Networking > VDS > Manage > Settings

vmware_vds_add_host

Añadir interfaces físicos a VDS y a uplink groups

vmware_vds_add_vmnic

Configuración vlan: virtual port group

Dentro de un VDS, se configuran virtual portgroup, que tienen la información de vlan, nic teaming y security igual que un portgroup tradicional.

Además, se les puede configura portmirroring.

Los virtual portgroup, se asignan en las máquinas virtuales igual que los tradicionales.

Powercli

Para gestionar virtual distributed switches, es necesario instalar el paquete  de VDSPowerCli , disponible en flings de vmware.

vmware_flings

 

pwcli1vmware

Cada vez que se vayan a invocar cmd-lets de VDS, es necesario cargar el módulo:

Add-PSSnapin VMware.VimAutomation.VdsComponent

Para ver todos los cmd-let disponibles

Get-Command –Module VMware.VimAutomation.VdsComponent

Vmware: Subir compatibilidad de forma automática con los reinicios

VMWare ESXi
VMWare ESXi

Estamos subiendo la compatibilidad de todas nuestras máquinas virtuales a vmx-10 que son las compatibles con ESXi 5.5 or higher.

Requiere reinicio, y aún tenemos muchas máquinas en versiones vmx-07  y vmx-08, que provienen de las versiones esxi 4.1 y 4.5 respectivamente.

Por ello, hemos optado por programarlo de forma automática, de forma que sean los usuarios en el reinicio los que suban de versión:

    https://communities.vmware.com/message/2249221#2249221

Hemos tenido que hacer un cambio en la línea 65 para que actúe sobre las máquinas que están en versión menor a 10:

if ($vmversion -ne "vmx-10") {

y que la versión que instale sea vmx-10, en la linea 72

$spec.ScheduledHardwareUpgradeInfo.versionKey = 'vmx-10'

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

Nueva versión vcenter vsca version 5.5.0 Update 2a

Ya ha salido la nueva versión (update2) de vsca vmware vcenter.

Para actualizar, simplemente se puede hacer a través del interfaz web, en la pestaña Update.

Vendor:
VMware Inc.
Appliance Name:
VMware vCenter Server Appliance
Appliance Version:
5.5.0.20100 Build 2170515
VMware vCenter Server Appliance
Update to version 5.5.0 Update 2a

Vsphere 5.5: Update Manager

Tras la instalación de vcenter vsca, llegamos al momento de revisar Vmware update Manager. Para nuestra sorpresa, a día de hoy sigue pidiendo la instalación sobre windows, y con una base de datos SQLServer no empotrada.

 

Before you install Update Manager, you must set up an Oracle or Microsoft SQL Server database. If your deployment is relatively small and contains up to 5 hosts and 50 virtual machines, you can use the bundled SQL Server 2008 R2 Express database, which you can install during the Update Manager installation.

Esperamos que vmware tome otro camino, por que es un producto excelente; pero SQLServer sube muchísimo el coste de despliegue.

 Guía de instalación y documentación general: Vmware update Manager

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 vsphere 5.5: Error MKS al abrir una consola

Error: Al conectar con una máquina virtual, se devuelve: Unable to connect to the MKS: malformed response from server

Revisar la conexión por el puerto 902.

Normalmente, un error de MKS al conectar con la consola de una máquina virtual, tiene que ver con un corte en las conexiones entre nuestro PC de origen, y el host que contiene la máquina por el puerto 902.

Definición de los puertos para la versión 5.5.0a

Error periódico en el host. Uso de la imagen para HP

En nuestro caso, revisadas las comunicaciones, se trata de un error de la imagen ESXi 5.5 con blades de HP G8. Os paso un hilo, donde está reportado:

https://communities.vmware.com/thread/462311?start=15&tstart=0

Hay ya un parche que aún no hemos habiltiado:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2063788

Por el momento, hemos optado por parar el servicio de hp ams, con uno de estos dos comandos:

chkconfig hp-ams.sh off

/etc/init.d/hp-ams.sh stop

 

 

 

Vmware: Depuración de errores de ESXi

Esta es la guía de pasos para depurar un error de un host ESXi de vmware.

Diagnóstico: El host ESXi aparece en el inventario como Disconnected.

Intentar reconectar

Si funciona, ha sido un error de red puntual.

Intentar acceder directamente al host con vsphere vclient

Ver si las máquinas aún están ejecutando. Si están ejecutando, parece un error de conexión host esxi con vcenter.

Si no podemos acceder al host, ni desde la misma subred, parece que parte de los servicios de esx se han caido. Intentamos acceder a través de la consola o de ssh.

Ver la consola local del host (esxi console)

Si hay un pantallazo morado, es momento de reiniciar, y luego leerse los logs a ver qué ha pasado.

Si no hay pantallazo morado, activar la consola ESXi

  1. Ver los logs: tail -f /var/log/?
  2. Probar la conectividad con vcenter mediante ping y traceroute
  3. Ver si es un problema con la vlan de conexión