VMworld
Currently Being Moderated

Muere VI ToolKit y nace vSphere PowerCLI 4.0

Posted by xacolabril on May 22, 2009 10:02:19 AM

Por fin he decidido a probar el ToolKit para PowerShell de VMWare. Una extensión que permite, desde PowerShell administrar nuestra infraestructura virtual mediante comandos centralizados. Lo veo muy últil para poder fabricar algunos scripts en PowerShell para realizar ciertas tareas de revisión, ciertamente tediosas, que todo profesional de las TI debe realizar durante su existencia en la tierra de los vivos. Ahora pienso en un sistema de balanceo de LUNs entre tarjetas iSCSI, o Fibre Channel, o consulta de parches instalados en los Hosts ESX, versión de Service Console, VM's arrancadas, estadísticas varias, etc... Una puerta de garaje para los más entusiastas de los comandos (colectivo en el que me atrevería a decir, me incluyo).

 

Podemos descargar el ToolKit desde www.vmware.com/go/powershell

 

 

A fecha de hoy, han aparecido tres versiones:

 

 

04-Sep-2008 - VI ToolKit 1.0 Update 1. La primera versión, para Windows.

27-Ene-2009 - VI Toolkit 1.5. Primera versión y media para Windows.

21-May-2009 - vSphere PowerCLI 4.0. Aprovechando la nueva versión de VI 4, vSphere, VMware ha publicado la nueva versión del ToolKit, compatible con VI3 entre otros. Eso sí, le han cambiado el nombre. Ahora la llamaremos vSphere PowerCLI

 

 

Para futuras versiones podéis consultar la URL http://www.vmware.com/support/developer/windowstoolkit/

 

 

Cabe decir que en mi caso he probado esta última versión, en una infraestructura 3.5 sin problemas, con posibilidad de conexión a host y a Virtual Center. La diferencia, lo de siempre, desde Virtual Center las consultas pueden hacerse en toda la infraestructura virtual y desde el host pues, eso, en ese anfitrión.

 

 

Primer pasos:

 

  • Cómo conectarnos a un host o al Virtual Center? Nada más fácil como:

 

Connect-VIServer -Server <NombreServidor> -Password <Contraseña>

 

 

En <NombreServidor> configuraremos el hostname del nuestro host a administrar o el hostname de nuestro servidor Virtual Centerl.

En <Contraseña>, configuraremos, en el caso de querer acceder a la administración de un host en particular, su contraseña root y en caso de intentar acceder al Virtual Center, la contraseña de nuestro usuario, autenticado y con permisos sobre el Virtual Center.

 

  • Para listar los Hosts debemos utilizar:

 

get-vmhost

 

 

Por ejemplo nos devolverá, un par de hosts, en mi caso:

 

 

Name                State            Id

 

 

Alfanumerico1 Connected HostSys...

Alfanumerico2 Connected HostSys...

 

  • Podemos utilizar pipes para enlazar resultados con otros comandos. Biennnnn! Por ejemplo, si queremos ver las Máquinas Virtuales ubicadas en un determinado host, por ejemplo en mi caso en mi host con nombre "Alfanumerico2" ejecutaríamos:

 

get-vmhost Alfanumerico2 | get-vm

 

 

Y nos devolverá, en mi caso las VMs de ese host:

 

 

Name PowerState Num CPUs Memory (MB)

 

 

VM1 PoweredOff 4 4800

VM2 PoweredOn 4 4096

VM3 PoweredOn 4 4096

 

 

Observamos que por defecto nos dice el número de vCPUs, Memoria asignada, nombre de la Máquina Virtual y el estado que se encuentra.

 

  • Si tenemos algún Cluster, sólo podremos listarlo si nos conectamos con PowerShell al Virtual Center. Por ejemplo para listar los Cluster ejecutaríamos:

 

get-cluster

 

 

Y como resultado, en mi caso:

 

 

Name HAEnabled HAFailover DrsEnabled DrsAutomationLe

Level vel

 

 

ClusterPruebasAlfa01 True 1 True FullyAutomated

ClusterPruebasBeta01 True 1 True FullyAutomated

ClusterProduccion001 True 1 True Manual

 

 

 

Observamos que en mis clusters aparece si tenemos HA activado (Alta Disponibilidad), el nivel de FailOver de HA, si DRS se encuentra activado y qué tipo de automatización en el movimiento de Máquinas Virtuales está configurado. Una maravilla, vaya.

 

 

Esto es muy sencillo, pero con la potencia de PowerShell (aunque un poco lento en mostrar los datos), podemos por ejemplo hacer otro tipo de consultas:

 

  • Listar las versiones de los ESX:

 

$FullName = @{ Label = "Product Full Name"; Expression = { (Get-View $_.ID).Config.Product.fullname } }

Get-VMHost | ft name,$fullname

 

 

 

Name Product Full Name

Alfanumerico1 VMware ESX Server 3.5.0 build-110268

Alfanumerico2 VMware ESX Server 3.5.0 build-110268

 

 

Ahora sí será necesario crear un Script para PowerShell, ya que la consulta es algo más compleja. Guardaríamos la consulta en un fichero ps1 y podríamos ejecutarlo de la forma habitual con PowerShell.

 

 

 

 

  • Listar las redes a las que están conectadas las Máquinas Virtuales:

 

$calcVMHost = @{ N = "VMHostName"; E = { (Get-VMHost -VM $_).Name } }

$calcNetwork = @{ N = "NetworkName"; E = { (Get-NetworkAdapter -VM $_).NetworkName } }

Get-VM | Select-Object Name, $calcVMHost, $calcNetwork

 

 

Name VMHostName NetworkName

VM1 Alfanumerico2 RedSalida1

VM2 Alfanumerico2 RedPruebas

VM3 Alfanumerico2 RedSalida2

VMA Alfanumerico1 RedPRoducc

 

 

En definitiva, podemos realizar bastantes consultas interesantes. No sólo consultas, también podemos administrar la Infraestructura Virtual, pero eso será en otro post.

 

 



There are no comments on this post