Archivos Mensuales: enero 2017

Mover un hipervisor de un vCenter a otro

Aprovechando la necesidad de reconstruír un vCenter debido a una muy extraña incidencia en un por demás fiable servidor Dell, decidí bajar el vCenter empaquetado que ofrece vmware.

Esto no es otra cosa que vCenter en Linux, concretamente una SuSE, con el software necesario para comportarse como un vCenter, empaquetado como una máquina virtual lista para desplegar.

He de decir que, aunque es un poco alienígena (¿qué ha hecho vmware que no lo sea?), funciona bastante bien en general. Y librarse de la licencia de Windows, y del Windows propiamente dicho, sienta bastante bien; no lo vamos a negar.

Ahora bien, hay que mover los hipervisores de un vCenter a otro. Y el switch distribuído está definido a nivel de vCenter, por lo que al cambiar de vCenter, las máquinas virtuales dejan de tener información sobre a dónde están conectados sus puertos. De momento funciona, pero no se puede tocar ni un puerto de una sola máquina virtual. ¿Qué vamos a hacer?

Migrar los puertos al switch distribuído del vCenter nuevo, claro.

Hay una opción maravillosa, al añadir un hipervisor al inventario de redes (Inventory->Networking) que casi no se ve: Migrate virtual machine networking.

Con esto, podemos elegir (tediosamente, puerto por puerto) a dónde conectar cada uno de los puertos de red de cada una de las máquinas virtuales.

Por supuesto, antes de desconectar el hipervisor del vCenter antiguo, hay que tener claro:

  1. Qué puerto(s) físico(s) del hipervisor es/son el/los asignado(s) al switch distribuído, para marcarlos al dar de alta al hipervisor en el inventario de redes.
  2. A dónde va cada puerto de cada máquina virtual.

Lo primero es trivial de mirar en la configuración; para lo segundo, me he hecho este pequeño guioncillo de PowerShell:

# Usuario y vCenter

$vcServidor = ‘vcenter.micasa'
$vcUsuario = ‘miusuario'
$vcClave = ‘miclave'

$hv=‘mihipervisor'
$historico = "C:\Users\yomismo\$(Get-Date -uformat "%Y%m%d-%H%M%S").sucesos"
Start-Transcript -Path $historico

Connect-VIServer $vcServidor -User $vcUsuario -Password $vcClave
$MVs = get-VMHost -name $hv | get-vm | sort name
Foreach($MV in $MVs) {
   $Adaptador=get-vm $MV | get-NetworkAdapter
   Write-Host ($MV.Name+" "+$Adaptador.NetworkName)
}

Armados con este conocimiento, y la paciencia de marcar a mano a cada interface en su red, podemos hacer el movimiento casi en menos que lo que se tarda en contarlo.

Por supuesto, es enteramente posible guardarnos la configuración de las máquinas virtuales y luego colocarlas con el mismo guioncillo. Pero entonces, ¿dónde estaría nuestro ojo inquisidor para detectar anomalías, ya de paso?