Google+

viernes, 1 de abril de 2016

Reclaim versión 5.1 y 5.5


Buenos días a tod@s!

Hoy quería mostraros una tarea a priori sencilla pero que me permite reducir mucho el tiempo en tareas de mantenimiento de mi infraestructura.

Generalmente, una vez al mes, suelo hacer un "reclaim" en mi host para liberar espacio en la cabina
( No hay un tiempo mínimo ni máximo para hacer este mantenimiento, pero siempre es recomendable cuando se han creado o borrado máquinas de nuestra granja)

Al tener varios Datastore en poner un simple comando (versión 5.5) se hacía tedioso, puesto que tienes que ir uno por uno y esperar a que se acabe el proceso anterior, los que lleven más tiempo recordarán que era peor aún en la versión 5.1 pues había que entrar dentro de la carpeta para realizar (en este caso) el vmkstool -y

Lo primero que hay que hacer es introducir vuestra clave publica en el host (esxi) para que se pueda conectar de forma remota automáticamente.

Para ello copiaremos nuestra clave en el esxi, a continuación os muestro la ruta dónde tendréis que copiar dicha clave:

/etc/ssh/keys-root 
vi authorized_keys

Ahí deberéis poner vuestra clave.

Bueno, manos a la obra.... se crea un script, pero... nos encontramos el 1º problema, nuestros esxi usan busybox, no tienen las mismas funcionalidad que bash, hay que escapar las variables para que las recozca. Sabiendo esto, ahora si que vamos a por ello....

La segunda curiosidad es que tendréis que añadir << EOF o un \ (final de carro) para que realice vuestras sentencias

Versión 5.1
- Aquí aún no he visto cómo pasarle la variable desde mi máquina local y que el cliente la reconozca, así que he introducido el porcentaje a reclamar directamente sobre el script, en cuanto pruebe un par de cosas más, actualizaré el post con la solución más optima,


#!/usr/bin/env bash

ssh root@192.168.x.x /bin/sh -- << EOF
  find /vmfs/volumes -type l -maxdepth 1 | while read datastore; do
     cd "\$datastore"
     echo "reclamando espacio de \$datastore ..."
     vmkfstools -y 60
     cd ..
  done

  echo "reclamado espacio disponible"

Versión 5.5

#!/usr/bin/env bash
ssh root@192.168.x.x /bin/sh -- << EOF
  find /vmfs/volumes -type l -maxdepth 1 | cut -d/ -f4 | while read datastore; do
    echo "reclamando datastore \$datastore"
    esxcli storage vmfs unmap -l "\$datastore" 
  done

  echo "reclamado espacio disponible"


Con sólo ejecutar nuestro script procederemos a reclamar el espacio de todos nuestros Datastores

Espero que os haya servido de ayuda, :)

Un saludo