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

Gestión de claves de hosts vmware en esxi 6

Las reglas de complejidad de claves en esxi 6, cambian entre las versiones.

A nivel de archivos en los hosts, se almacena en /etc/pam.d/passwd

Este era el nivel por defecto en esxi 5.5:

password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=8,8,8,7,6

El nivel que sale por defecto en esxi6:

password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=disabled,disabled,disabled,7,7

Para hacer cambios, se debe hacer a través del interfaz web. En la versión anterior sí se hacía a través de archivos.

esxi_change_security

Para cambiar de forma descentralizada todas las claves de los hosts, recomiendo usar un script de powercli:

Esta opción no deja log

https://deangrant.wordpress.com/2014/07/15/powercli-changing-esxi-host-root-password/

Mucho más completo, el script de definit.co.uk que exporta un log con el resultado:

http://www.definit.co.uk/2013/06/changing-esxi-root-passwords-the-smart-way-via-powercli/

Powercli: Clonar lista de máquinas eligiendo como destino el datastore que tiene mayor capacidad

Para agilizar las clonaciones de listas de máquinas, es necesario usar un powercli, que, además, elija como destino el datastore que tenga mayor espacio disponible.

VMWare ESXi
VMWare ESXi

Para ordenar los resultados de datastore en función del espacio disponible:

     $datastorelist = Get-Datastore -Location $DatastoreCluster | sort -descending FreeSpaceMB

 

En nuestro caso, tenemos los datastore configurados como un datastorecluster, pero,en el caso de no tener, podríamos usar como Location directamente el nombre del cluster o del datacenter donde queremos seleccionar el datastore.

El script completo, está disponible en github.

 
foreach ($clonename in $new_vm)		
	{
    #Select datastore with more space:
    # $datastorelist = Get-Datastore -Location $Datacenter | sort -descending FreeSpaceMB
    # Use in case there are datastore clusters
    $datastorelist = Get-Datastore -Location $DatastoreCluster | sort -descending FreeSpaceMB
    $datastore = $datastorelist[0].Name
    "Clone $clonename in $datastore"

	if (New-VM -Name $clonename -ResourcePool $respool -VM $sourceVM -Location $folder -Datastore $datastore -DiskStorageFormat Thick )
		{"DONE $clonename"}
	else
		{"Something wrong with cloning"}
}	

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

Powercli – Clonar varias máquinas a la vez

Queremos clonar de forma automática un número de máquinas, con un patrón concreto. Para ello, hemos usado de powershell:

  • -Match
  • -notmatch

La autentación contra vcenter está fuera del script. Debe hacerse antes de llamarlo.

Al no tener resource pools configurados, la nueva máquina, debe dejarse en el resourcepool “Resources”. Con get-resourcepool podemos consultar cuáles tenemos disponibles en nuestra arquitectura.

# Basado en http://vmwaremine.com/2013/05/28/powercli-clone-vm/
#
# Ester Niclos Ferreras
# Last updated: 29/2/14

# PRe: connect-viserver vc

#
# SourceVM:
#
$vmlist= get-vm pattern* | WHERE   { $_.Name -notMatch “no_pattern” }

$datastore = Get-Datastore “my_datastore”
$folder = get-folder “my_folder” -Location “my_datacenter”
$respool = get-ResourcePool Resources -Location “manvmecluster”

foreach ( $sourceVM in $vmlist) {
$cloneName = $sourceVM.Name +’-clone’

#write-host $sourceVM $cloneName $datastore  $folder

if (New-VM -Name $cloneName -ResourcePool $respool -VM $sourceVM -Location $folder -Datastore $datastore -DiskStorageFormat Thin )
{“DONE”}
else
{“Something wrong with cloning”}
}

 

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.

Migración a Vmware Vsphere 5.5.0a

Como siempre hay que moverse en esta vida, y más en un departamento de sistemas, ha llegado el momento de migrar de vmware 5.1 a 5.5

La guía completa de instalación  es tan completa, que asusta.
Vamos a probar la virtual Appliance para analizar sus posibilidades.
La guía de buenas prácticas de vcenter 5.5 también es más extensa de lo que nos gustaría.

Revisión rutas de red – Cortafuegos

Tendremos que revisar las rutas de red del firewall, ya que hay pequeños cambios de puertos respecto de las versiones anteriores.

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

Exportación de la información de inventario

De nuestra antigua máquina, queremos mantener parte del inventario.  Nos interesan:

  • Permisos de usuarios
  • Inventario de carpetas y asignación de máquinas virtuales a carpetas
  • Información de clusters, DRS y configuraciones de pool de recursos.

Vamos a usar el paquete Inventory snapshot que da vmware en sus labs

Despliegue del ovf

Hemos optado por la versión de la plantilla VMware-vCenter-Server-Appliance-5.5.0.5101-1398493_OVF10.ovf

Tras el despliegue, entramos en la máquina por la interfaz web con el usuario por defecto: root: vmware

Configuramos SSO con la base de datos empotrada (embedded) y dejamos para más adelante la configuración con el servidor de Active Directory.

Configuración active directory

Necesitamos unir la VCSA a dominio. Para ello, revisamos la información de red y la de autenticación:

https://my ip:5480/#virtualcenter.authentication

Al usar el OVA, no se puede usar la opción de Active directory Integrated Windows Authentication sin unir la máquina a dominio.

Necesitamos añadir Active Directory Enabled con un identificador de dominio y un usuario administrador de dominio.

Si al unir, da el error Invalid Hostname. FQDN is required for joining a domain, es necesario revisar la información de red, yponerle sufijo del dominio en la configuración de hostname dentro de la configuración de red.

Accedemos a la consola de gestión del vcenter con el usuario el usuario de sso: administrator@vsphere.local.

https://my-ip:9443/vsphere-client/#extensionId=sso.admin.manage.ids

Home > Administration > SingleSignOn> Configuration > Identity sources

Para evitar tener que introducir constantemente el dominio, se pincha sobre el icono “Set as domain default”. Parece un mundo con una flecha encima.

Esta vista, sólo aparece para el usuario administrator@vsphere.local .  El usuario root no tiene acceso aquí.

Más información en stepbystep 

Probar el acceso.

Para probar el acceso, hay que dar permisos a nivel del vcenter a nuestro usuario o grupo de administración.

Después, ya podemos entrar con el cliente VMware-viclient-all-5.5.0-1281650.exe a nuestra nueva instalación

Uso de credenciales de windows

Para usar en el cliente web las credenciales de windows, es necesario instalar en local el client Integration Plugin, que se indica en la página principal del web client

https://my-ip:9443/vsphere-client/