Archivos Mensuales: mayo 2016

Powershell y VMWare: Mola bastante

Voy a ser sincero: Considerando cuándo lo echaron al mundo, Powershell me parece, como dicen los abogados, manifiestamente mejorable. Pero es el lenguaje de scripting (en español: pequeñas ñapillas rápidas) de vmware, y si se necesita hacer algo programado, sin florituras pero que ande, es lo que hay que usar.

Cansado de vaciar a mano los almacenamientos para instalarles parches, decidí ponerme profilaxis, echar mano de Notepad++, y tras las típicas tribulaciones de los que aprendimos a programar hace muchos años y raramente lo hacemos ya (sustitúyase «programar» por «montar en bicicleta» para un ejemplo gráfico), acabé con lo siguiente, que es una ñapa de lo más funcional.

Que ustedes lo disfruten.

<#
.SYNOPSIS
 Vaciar un almacenamiento
.DESCRIPTION
 Mueve todas las máquinas virtuales del almacenamiento origen al destino
.INPUTS
 None
.OUTPUTS Log File
 Por ahora, no deja ni rastro
.NOTES
 Version: 0.1
 Author: alfredo
 Creation Date: 20160421
 Purpose/Change: Version inicial
.EXAMPLE
 $almacenOrigen = "Origen"
 $almacenDestino = "Destino"
#>
# Horas de operacion
$horaInicio = "1"
$horaFin = "6"
$almacenOrigen = "Origen"
$almacenDestino = "Destino"
# Usuario y vCenter
$vcServidor = '172.16.0.0'
$vcUsuario = 'usuario'
$vcClave = 'clave'
# Velocidad a la que consideramos que movemos las maquinas en GB/min
$velocidad = 1.5
$historico = "C:\Users\alfredo\$(Get-Date -uformat "%Y%m%d-%H%M%S").sucesos"
Start-Transcript -Path $historico
Connect-VIServer $vcServidor -User $vcUsuario -Password $vcClave
$MVs = get-datastore -name $almacenOrigen | get-vm | sort UsedSpaceGB
Foreach($MV in $MVs) {
 # Ver si estamos en hora y si acabariamos en hora
 do {
 $h=Get-Date
 sleep 100
 } while ( ($h.Hour -lt $horaInicio) -or ($h.Hour -gt $horaFin) )
 $mogollon=[math]::round((get-vm $MV).UsedSpaceGB , 2)
 $finEstimado=$h.AddMinutes($mogollon/$velocidad)
 if ( $finEstimado.Hour -lt $horaFin) {
 Write-Host ([string](Get-Date) + " Empezando a mover '" + $MV.Name + "'")
 Move-VM -VM (Get-VM -Name $MV) -Datastore $almacenDestino -DiskStorageFormat thin
 Write-Host ([string](Get-Date) + " Movido '" + $MV.Name + "'")
 } else {
 # Estamos fuera de hora, asi que esperamos
 # Deberiamos calcular mejor cuanto tenemos que esperar, para otra version
 sleep 1000
 }
}

El flujo de aire en los equipos de red

Es una vieja pelea, de esas que acaban por diluírse en el tiempo, poco a poco, con cambios que se van sucediendo y que acaban por hacer el problema irrelevante.

Los servidores, por una herencia que se remonta al diseño de los PCs originales, absorben aire frío por la parte delantera (donde están normalmente los botones, los dispositivos de almacenamiento, y las lucecitas) y los echan caliente por la trasera (donde están generalmente los conectores, enchufe y cerca de donde se sitúan las fuentes de alimentación).

Los switches de red, por su parte, empezaron por ventilarse de un lado al otro. ¿Por qué? Fácil: Es por donde había hueco. 48 puertos RJ-45 ocupan prácticamente todo el frontal de 1U en un armario de 19″. ¿Y los routers? Pues como Cisco decidió en su día: Pusieron en el frontal los conectores de red, en la trasera el de alimentación… Y empezaron a bufar hacia el lado contrario que los servidores.

Cuando la densidad fue creciendo en los centros de datos, la cosa empezó a ser un problema. Todo el mundo copió a los fabricantes pioneros como Cisco, y el resultado es que a 2016, los equipos de Mikrotik hacen lo que hacía Cisco en los 90: Coger aire del frontal, donde está su pantallita, sus luces y sus conectores, y echarlo hacia «atrás», que es donde está la fuente y el conector de alimentación.

Y con ello, los routers, definitivamente, quedan sólidamente establecidos con flujos de aire exactamente al revés que los servidores: Del lado donde están los conectores, al otro. Mientras que los servidores, fieles a su larga tradición, siguen enviando el aire del «otro» lado, al de los conectores.

En un centro de datos clásico, donde lo que hay es aire frío a cascoporro, cada equipo está montado como cayó, y los flujos de aire no están definidos, eso no es un problema. Pero, ¿qué ocurre en un centro de datos moderno, con separación de pasillo frío y caliente? Pues muy sencillo. Como de lo que más hay es servidores, se puede elegir entre tres alternativas para los equipos de red:

  1. Ponerlos con los conectores al mismo lado que los servidores, y que se frían por estar «respirando» aire caliente;
  2. Ponerlos con un flujo de aire correcto y pasar el resto de la vida moviendo cables de un lado a otro del armario;
  3. Arreglar el bendito problema de una vez, invirtiendo el flujo de aire para hacerlo igual que el de los servidores.

Así que, sin discurrir mucho más, vamos a examinar la alternativa 3.

Empezaremos por hacer notar que algunos fabricantes como Cisco o Juniper, en su infinita sabiduría, hace poco empezaron a fabricar switches (algunos, no todos) que se pueden pedir con los flujos de aire en un sentido o en otro, o incluso dar la vuelta a voluntad. Esto es perfecto para un entorno de centro de datos, sobre todo si hablamos de switches con 48 puertos y por tanto 48 cables que no hay que pasar de un lado al otro del armario y, lo que es más engorroso, mantenerlos.

Sin embargo, si vamos a ver los populares routers de Mikrotik, veremos que, ocupados en detalles sin importancia como crear equipos de una relación precio/potencia de otro mundo, siguen haciendo lo que Cisco en los años 90: Mover el aire al revés que los servidores.

Arreglemos, pues, ese problema.

En los CCR1036, la cosa es fácil. Solo tienen dos ventiladores, exactamente delante del disipador del procesador. Dos tornillos por cada uno, se les da la vuelta y problema resuelto.IMG_8714

En los CCR1072, la cosa es ligeramente más complicada. Llevan seis ventiladores: Cuatro delante del disipador del procesador (que se invierten de manera análoga a como se hace en los 1036) y uno en cada una de las dos fuentes de alimentación. En su infinita sabiduría, Mikrotik ha decidido que los tornillos de la carcasa de la fuente de alimentación sean T-5 (o por ahí), es decir, tirando a rarillos. Nada que no pueda resolver un juego de destornilladores «de precisión», que el chino de la esquina suministrará sin problema ninguno. Hay que desmontar completamente la fuente, sacando la PCB fuera, para acceder todos los tornillos. Pero hecho esto, y rutado el cable del ventilador por un lateral, se acabaron los problemas.

Por cierto, que todos los tornillos dentro de la fuente son los habituales Phillips del número 2. Y nos quejamos cuando Apple hizo aquella jugadita del «pentatorx»…IMG_8716

En el momento de escribir esto, he efectuado la operación en varios 1036 y un par de 1072. Como estos son los más grandes, parecen más interesantes. Pues bien, con el flujo de aire corregido, y cursando 1 Gbps de tráfico, la CPU se mantiene en unos tranquilizadores 50C y 54C; y eso, teniendo justo debajo un par de Catalyst con el flujo de aire al revés.