Solucionando error: vRA First boot check on failed on host

En esta oportunidad estaremos revisando la solución al error LCMVRAVACONFIG590060, que podría llegar a ocurrir durante el proceso de actualización de la solución vRealize Automation (vRA) 8.x. Cabe anotar que este error se produjo después de que vRealize Lifecycle Manager (vLCM) había marcado el pre check como exitoso. Pero bueno, cosas extrañas pueden ocurrir.

El detalle del error básicamente contienen lo siguiente:

com.vmware.vrealize.lcm.common.exception.EngineException: vRA First boot check on failed on host : irpaclyvm-vra-it-01.lab.local. Run command 'vracli status first-boot' to find first boot status        at com.vmware.vrealize.lcm.plugin.core.vra80.task.VraVaPreUpgradeTask.execute(VraVaPreUpgradeTask.java:111)        at com.vmware.vrealize.lcm.automata.core.TaskThread.run(TaskThread.java:45)        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)        at java.base/java.lang.Thread.run(Unknown Source)

La solución a este problema es bastante sencilla y únicamente requiere seguir el procedimiento a continuación.

PROCEDIMIENTO

1. Inicie sesión ssh en el nodo que reporta el error en vLCM y ejecute el siguiente comando

vracli status first-boot

Si la salida del comando anterior es Error: Cannot connect to Tiller, continúe con los siguientes pasos.

2. Descargue el archivo 2672731-add-tiller-proxy.tar desde los adjuntos del KB81815.

3. Tome un snapshot al nodo de vRA reportado por vLCM (en este caso el nodo vra-01)

4. Inicie sesión en el nodo de vRA que reporta vLCM con la herramienta WINSCP y cargue el archivo del paso anterior “2672731-add-tiller-proxy.tar.gz” en la ruta “/root“.

5. Vuelva a la sesión SSH del nodo de vRA (en este caso nodo vra-01) y ejecute el siguiente comando

tar -xvf 2672731-add-tiller-proxy.tar.gz && chmod a+x 2672731-add-tiller-proxy.sh && ./2672731-add-tiller-proxy.sh && rm 2672731-add-tiller-proxy.*

6. Inicie sesión SSH en cada uno de los demás nodos de vRA y ejecute el siguiente comando para verificar que se puede acceder a helm desde todos los nodos de vRA.

helm ls

Ejemplo: Nodo vRA 01

Ejemplo: Nodo vRA 02

Ejemplo: Nodo vRA 03

Nota: Helm es un administrador de paquetes para Kubernetes y se utiliza para empaquetar, configurar e implementar aplicaciones y servicios en clústeres de Kubernetes.

7. Vuelva a la interfaz de vLCM, en el request fallido haga clic en RETRY y después en SUBMIT.

8. Al final el proceso de actualización de vRA debería ser exitoso y el resultado del Request debería mostrarse como Completed.

Referencia

https://kb.vmware.com/s/article/81815

Solucionando precheck fallido: Disk space on Service-Logs partition needs to be increased – vRA Upgrade 8.x

En esta oportunidad vamos a resolver rápidamente un problema que suele ocurrir durante la validación que vRealize Lifecycle Manager (vLCM) realiza en el proceso de actualización de vRealize Automation 8.x (vRA).

El proceso de validación falla aunque la partición de logs tiene suficiente espacio libre. De acuerdo al precheck realizado por vLCM durante el proceso, el disco debería tener mas de 22GB y solo tiene 8GB.

Pues bien, si hacemos clic en VIEW en la columna Recommendations, podremos obtener la recomendación para la solución a nuestro problema. Donde básicamente nos indica que crezcamos en este caso el disco VM Disk 3 y después ejecutemos el comando vracli disk-mgr resize, en el Appliance con el error (en este caso lo muestra para los tres appliances del cluster de vRealize Automation 8.x).

Nota: El problema realmente ocurre cuando nuestra versión de vRA es 8.0.1 o 8.1. Que es nuestro caso (8.1). Pero afortunadamente existe un workaround que consiste de los siguientes pasos.

1. Inicie sesión SSH hacia cada uno de los appliances de cluster vRA y ejecute los siguientes comandos para verificar el espacio de los disco en vRA.

vracli disk-mgr

También puede utilizar el comando df -h

2. Crezca el tamaño del disco indicado desde vCenter Server en cada una de las VM asociadas al cluster de vRA 8.x.

3. Vuelva a la sesión ssh y ejecute el siguiente comando en cada uno de los appliances del cluster de vRA.

vracli disk-mgr resize

Verifique el log con  el comand cat /var/log/disk_resize.logdf -h

Si obtiene alguno de los siguientes errores durante el Resizing continúe con los siguientes pasos.

"ERROR: Error resizing file system"

"Extending logical volume services-logs... New size (5119 extents) matches existing size (5119 extents)"

"ERROR: Error resizing logical volume."

4. Ejecute los siguientes comando en cada uno de los appliances de vRA

/usr/sbin/resize2fs /dev/mapper/logs_vg-services--logs

rm /var/vmware/prelude/disk-management/disk_stats

vracli disk-mgr

(Opcional) df -h

Ejemplo: Nodo vRA 01

Ejemplo: Nodo vRA 02

Ejemplo: Nodo vRA 03

Después de haber realizado el procedimiento anterior, podrá realizar el precheck nuevamente y este debería mostrar el mensaje "All validations passed for this environment".

Referencia

https://kb.vmware.com/s/article/79925

Reset password expirado en VMware Identity Manager vía API

En esta ocasión venimos a solucionar un problema que hace un par de días me consumió toda una tarde, primero porque no tenia ni idea de como configurar Postman y segundo porque no sabia como utilizar las API calls disponibles para VMware Identity Manager (vIDM).

Escenario:  El usuario default Tenant (confiadmin) o cualquier usuario local creado en vIDM para el entorno de vRA tiene su contraseña expirada.

Antes de continuar debemos aclarar que si tenemos un SMTP configurado en la solución vIDM, el reset del password no seria un problemas debido a que simplemente hacemos login en la URL del Tenant de vIDM con el usuario admin, vamos a la sección User & Groups, seleccionamos el usuario que tiene el password expirado y hacemos clic en reset password. Esta acción envía una notificación por email y desde allá podremos restaurar la clave.

El problema realmente viene cuando no tenemos un SMTP configurado, por lo tanto VMware Identity Manager (vIDM) no es capas de enviar la notificación al usuario y no podemos restaurar la contraseña de esta manera. El error generado cuando esto pasa dice los siguiente: Password reset email could not be sent due to "Error sending email".

Como el nombre del post lo indica, la clave aquí es usar API calls utilizando la herramienta Postman. Al final notará que resulta ser la forma mas fácil de solucionar el problema. Veamos el procedimiento…

PROCEDIMIENTO

El procedimiento explicado a continuación muestra la desde la configuración del cliente necesario en vIDM, hasta la utilización de las APIs en Postman para la restauración del password del usuario afectado.

Configurar vIDM para usar OAuth token

1. Una vez instalada la herramienta debemos configurar un token para la autenticación. Utilizando los siguientes pasos que han sido adaptados del siguiente blog.

2. Desde un navegador web haga Login en la URL del Tenant de vIDM en donde tiene el usuario afectado. Y luego vaya a la seccione Catalog y clic en Settings.

3. Clic en Remote App Access y después clic en Create Client.

4. Configure el Cliente con los siguientes datos:

– Access Type: Service Client Token.

– Client ID: Elija un nombre como por ejemplo PostmanClient.

5. Ahora haga clic en la flecha frente a Advanced para visualizar las opciones y clic en  Generate Shared Secret. (copie y pegue el Shared Secret generado en un bloc de notas para utilizarlo mas adelante).

Nota 1: Los valores del TTL del token de acceso le indicarán cuánto tiempo serán válidos sus Tokens tipo Bearer.

6. Y por ultimo clic en el botón ADD.

Configurar Postman para usar un token OAuth

1. Lo primero que debemos hacer por supuesto es descargar e instalar Postman, la descarga la pude realizar desde aquí.

2. Abra una nueva pestaña en Postman.

3. En la sección Authorization, seleccione TYPE como “OAuth 2.0”

4. Clic en el botón Get New Access Token y configure los siguientes datos:

– Token Name: elija un nombre. Ejemplo: vIDM Token

– Grant Type: Client Credentials

– Access Token URL: ingrese https://URL_del_Tenant/SAAS/auth/oauthtoken.

  Ejemplo:  https://irpaclyvm-vidm-it-mst.lab.local/SAAS/auth/oauthtoken

– Client ID: Ingrese el Client ID creado arriba (PostmanClient).

– Client Secret: Copie y pegue el shared secret que dejó disponible en el bloc de notas anteriormente.

– Scope: Admin.

– Client Authentication: Send as Basic Auth header.

5. Haga clic en Request Token.

6. Clic en Use Token.

7. Ahora podrá ver sus token creados en el menú desplegable de Available Tokens para su posterior uso.

Hasta aquí ya tenemos vIDM y Postman listos para usar las API call y solucionar nuestro problema con la contraseña del usuario configadmin.

Consultar detalles del Usuario

Debido a que necesitamos restaurar la contraseña del usuario configadmin. Lo primero que debemos hacer es obtener los detalles de ese usuario especifico haciendo uso de la siguiente API.

1. Abra una nueva pestana en Postman.

2. Seleccione el método  GET e ingrese la API para la URL del Tenant https://URLTENANT/SAAS/jersey/manager/api/scim/Users?filter=username%20eq%20%22MiUsuario%22.

Nota 2: Reemplace MiUsuario con el username de su ambiente. Para este ejemplo utilizaremos configadmin

Ejemplohttps://irpaclyvm-vidm-it-mst.lab.local/SAAS/jersey/manager/api/scim/Users?filter=username%20eq%20%configadmin%22

3. Click en el botón Send.

Esta API devolverá todos los atributos asociados para el usuario filtrado.

Nota 3: El resultado de este método debe mostrar Status: 200 OK.

4. De esta salida nos interesa el “Id” del usuario afectado (en este caso configadmin). Por lo que será necesario copiarlo para la modificación de su contraseña .

Modificación del Usuario

Utilizando el “Id” copiado anteriormente utilizaremos la siguiente API para modificar el valor de la contraseña del usuario afectado (configadmin).

1. Abra una nueva pestana en Postman.

2. Seleccione el método  PATCH e ingrese la API para la URL del Tenant https://URLTENANT/SAAS/jersey/manager/api/scim/Users/{ID}

Nota 4: Reemplace la URL del Tenant y el ID del usuario afectado.

Ejemplo: https://irpaclyvm-vidm-it-mst.lab.local/SAAS/jersey/manager/api/scim/Users/12cd6205-6b20-4d00-96b8-b3481155f87e

3. Como puede apreciar en la documentación de las referencias API para vIDM. Para esta API es requerido el ID y el Body. Por lo que tendremos que hacer clic en la pestaña Body, seleccionar raw y escribir los siguiente:

{

    “password”: “VMware1!”

}

Nota 5: Reemplace el password por el deseado.

4. Clic en el botón Send.

El resultado de este método debe mostrar Status: 204 No Content.

5. Ahora debería poder utilizar su contraseña actualizada. Abra una ventana de un navegador web con la URL del Tenant y haga login con el usuario y el nuevo password.

Verificar integridad de medios de instalación VMware (checksum)

Como ya sabemos, una suma de verificación o checksum, es el resultado de ejecutar una función hash criptográfica dentro de un archivo, que tiene como propósito principal detectar cambios en una secuencia de datos para proteger su integridad. La particularidad de esto es que un pequeño cambio en el archivo provoca una salida totalmente distinta.

Dicho esto, checksum nos permite verificar la integridad del medio de instalación y estar seguros que el contenido del mismo no ha sido alterado y es tal y como lo indica su fabricante.

Lo importante a tener en cuenta en este post es que el objetivo no es garantizar una procedencia confiable del medio de instalación, sino verificar la integridad del archivo descargado.

Dejando un lado la teoría vamos a lo que nos interesa…

PROCEDIMIENTO

Utilizando la línea de comando de Windows (CMD) y la herramienta CertUtil incluida en las versiones mas recientes del sistema operativo. Ejecute el siguiente comando.

CertUtil -hashfile "Ubicacion_y_nombre_del_archivo" MD5

Nota 1: Para no tener que escribir el nombre del archivo, podemos simplemente seleccionarlo y arrastrarlo dentro de la consola de CMD de Windows y de esta manera incluirá la ubicación completa del mismo.

El resultado del comando nos devuelve un número de verificación similar al siguiente. Selecciónelo y cópielo para el siguiente paso (el de su Command Prompt).

e05748cea32d60566f0738a5b811cfdc

Para verificar que el archivo no ha sufrido ninguna modificación durante la descarga o posterior a ella, vaya a la página de descargas de VMware, donde descargó el medio de instalación, utilice la función Buscar… (ctrl+f o command+f) y dentro del campo de búsqueda pegue el numero que devolvió la salida del comando anterior.

De esta manera podemos buscar rápidamente si el numero que nos devolvió la herramienta CertUtil corresponde con el numero de verificación (MD5SUM) publicado por el fabricante.

Nota 2: Sino puede ver los detalles del medio de instalación en pagina de descargas. Haga clic en el enlace Read more para visualizar la información publicada por VMware.

Si el numero es encontrado como en la imagen anterior, el medio de instalación es apto para ser usado. Sino es así, vuelva a descargar el medio de instalación porque seguramente esta corrupto.

Nota 3: Puede utilizar la herramienta CertUtil para la suma de verificación de otros algoritmos hash cambiando el parámetro MD5 en el comando por cualquiera de los siguientes. VMware en su página de descargas publica la información para MD5SUM, SHA1SUM y SHA256SUM.

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

Por ultimo y como recomendación, realice este procedimiento para evitar algunos dolores de cabeza y perder tiempo tratando de solucionar problemas que probablemente vienen del medio de instalación y no del proceso de instalación o actualización.

Creciendo almacenamiento de vRealize Lifecycle Manager (vLCM)

¿Quien no ha tenido problemas con el espacio de vRealize Lifecycle Manager (vLCM) cuando estamos realizando una actualización o una instalación de una solución VMware? Pues bien, este post se centrará en este problema común que genera un error en el Request al intentar descargar los Binarios directamente desde My VMware o al intentar hacer el Mapping Local de los mismos.

Si analizamos los destalles del request en la sección Home -> Requests del servicio Lifecycle Operations podremos observar que el detalle del error básicamente contiene lo siguiente:

“com.vmware.vrealize.lcm.common.exception.userinput.myvmware.MyVmwareProductDownloadException: Error occurred while downloading product binaries from MyVMware account : nasawest@vmware.com. Please check the logs for more details        at com.vmware.vrealize.lcm.drivers.myvmware.helper.MyVmwareDownloadRestClient.downloadFile(MyVmwareDownloadRestClient.java:714)        at com.vmware.vrealize.lcm.drivers.myvmware.helper.MyVmwareDownloadUtil.getDownloadUrlsAndDownloadProductBinaryFiles(MyVmwareDownloadUtil.java:295)        at com.vmware.vrealize.lcm.drivers.myvmware.helper.MyVmwareDownloadUtil.downloadProductBinaries(MyVmwareDownloadUtil.java:168)        at com.vmware.vrealize.lcm.plugin.core.myvmware.tasks.MyVmwareDownloadTask.execute(MyVmwareDownloadTask.java:203)        at com.vmware.vrealize.lcm.automata.core.TaskThread.run(TaskThread.java:45)        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)        at java.base/java.lang.Thread.run(Unknown Source)Caused by: java.io.IOException: Error occurred when uploading file to a content repo. It could be due to disk space not available.        at com.vmware.vrealize.lcm.drivers.sourcemapping.helper.SourceMappingUtil.mountISOandUpload(SourceMappingUtil.java:1056)        at com.vmware.vrealize.lcm.drivers.myvmware.helper.MyVmwareDownloadRestClient.downloadFile(MyVmwareDownloadRestClient.java:659)        … 7 more”

Indicándonos una línea muy importante “It could be due to disk space not available” en donde nos esta diciendo que posiblemente no hay espacio disponible para la descarga de los binarios. Para verificar esto haremos lo siguiente:

Iniciamos sesión SSH hacia el Appliance de vLCM con usuario root y la clave configurada durante la instalación.

Ejecutamos el comando df -h

Efectivamente podemos evidenciar que el disco con la ruta /data se encuentra al 72% de utilización y debido a que en este caso de laboratorio el disco es de apenas 20GB, es necesario crecer el disco para poder descargar los BINARIOS.

¿Como lo hacemos entonces para crecer el disco?

No te preocupes… En la interfaz grafica (UI) de vLCM vamos Lifecycle Operation y despues a la sección Home -> Settings -> System Details.

Nota 1: Desde aquí también obtendremos un resumen del almacenamiento usado.

Para Extender el disco simplemente debemos hacer clic en el botón EXTEND STORAGE y diligenciar los datos solicitados para el vCenter Server que esta administrando el Appliance de vLCM. Para este ejemplo creceremos el disco en apenas 10 GB. (Ver Nota 3 al final sino tienes una credencial configurada para vCenter Server).

Clic en el botón EXTEND para continuar.

Clic en el enlace Click here para verificar los detalles del Request y monitorear su actividad.

Una vez terminado el proceso de expansión podrá ver de nuevo en Home -> Settings -> System Details que ya aparecerá el nuevo espacio. Ahora contamos con un total de 30 GB y un 48% usado.

En este punto podemos intentar de nuevo el proceso para descargar los BINARIOS desde Home -> Settings -> Binary Mapping, y el Request debería funcionar sin problemas.

El request para la descarga tardará un par de minutos así que sea paciente.

Una ves completado el Binario estará disponible en Home -> Settings -> Binary Mapping.

Nota 2: La configuración de los Binarios lo remataremos en otro post para no hacer este tan largo.

Nota 3: En vLCM todas la contraseñas son referenciadas desde el Locker. De manera que sino cuenta con una credencial creada para vCenter Server, vaya primero al Locker de vLCM y configure una.

Resolviendo los Errores: “The VM failed to resume on the destination during early power on” y “Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid”

En esta ocasión nos vamos a centrar en la solución de un par de errores que me han aparecido varias veces en los últimos días durante la actualización de una infraestructura, en la cual se debe constantemente liberar hosts entrándolos en modo mantenimiento para que a través de las funcionalidades de DRS y vMotion evacúe las VMs y de esta manera poder realizar la correspondiente actualización del hipervisor.

Pues bien, el problema radica en que algunas máquinas fallan en la tarea de vMotion con el error: “The VM failed to resume on the destination during early power on”, impidiéndonos hacer el movimiento en caliente y como consecuencia no podemos ingresar el host en modo mantenimiento. Hasta ahí un parte del problema ya que al apagar la VM esta se migra como es de esperarse, pero no enciende indicando ahora que no es posible crear el archivo .vswp con el error “Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid

A los que no les ha pasado que suertudos son. Sin embargo, pueda que en algún momento les pase y en ese momento !que no panda el cunico!, siguiendo el procedimiento a continuación saldremos adelante.

image

CAUSA #1

Este problema se produce cuando se realiza un Storage vMotion para mover los disco de la máquina virtual a otro Datastore mientras el Change Block Tracking (CBT) está habilitado y la máquina virtual está encendida. Esto provoca que los archivos de configuración de la máquina virtual permanezcan en la ubicación original y adicionalmente los archivos Disk-Name.ctk de la máquina virtual queden en un estado bloqueado, lo que evita que las futuras operaciones de vMotion tengan éxito.

SOLUCIÓN #1

Una vez entendido por qué no podemos mover la maquina, vamos a resolver el problema siguiendo los siguientes pasos:

1. Apague la máquina virtual de manera controlada

2. Click derecho sobre la máquina y Edit Settings

3. Click en la pestaña VM Options

4. Expanda la opción Advanced y click en Edit Configuration… frente a Configuration Parameters

5. Para filtrar la búsqueda escriba ctkEnabled en el campo superior derecho

6. Verifique que los valores de ctkEnabled y scsix:x.ctkEnabled se encuentren en False, sino es así cámbielos. y haga click en OK

image

7. Verifique que en la opción ‘Swap File location’ se encuentre en la opción Default, a no ser que en su infraestructura tenga un datastore con discos de estado solido dedicado a los archivos swap. Haga click en OK para aceptar el cambio en la configuración

image

8. Migre la máquina a otro host disponible y enciéndala

9. Verifique que la VM se pueda mover entre diferentes hosts en el estado Powered On.

Nota: Si después de realizar el procedimiento anterior no presenta ningún problema, usted ha sido bendecido y puede irse a tomar un café con la satisfacción de haber resuelto el problema.

Pero si por el contrario, luego de hacer el procedimiento anterior la máquina no enciende en el otro host con el siguiente error “An unexpected error was received from the ESX host while powering on VM vm-xxxxx,
Failed to power on VM, Unable to create a swap file. The value of ‘sched.swap.dir’ specified in the VM’s configuration file is invalid
”, entonces continúe con el procedimiento.

CAUSA #2

Este problema ocurre cuando la ruta sched.swap.dir no se actualiza en el archivo .vmx de la máquina virtual después de migrarla.

SOLUCIÓN #2

1. Apague la máquina virtual de manera controlada

2. Migre la máquina a otro Datastore de manera temporal o definitiva

3. Inicie sesión en el host en donde se aloja la VM. Utilice SSH con Putty.exe si es amante de la línea de comandos o una sesión SFTP con WinSCP si prefiere la interfaz grafica. Navegue hasta la siguiente ruta

/vmfs/volumes/datastore/virtual_machine/, donde datastore es el nombre del datastore y virtual_machine es el nombre de la máquina

4. Si utiliza Putty.exe, ejecute el comando vi virtual_machine.vmx para ingresar y editar el archivo de configuración de la máquina. Por otra parte, si utiliza WinSCP haga doble click en el archivo virtual_machine.vmx para abrirlo

5. Cualquiera que haya sido el método para ingresar al archivo de configuracion .vmx, busque la entrada nombrada como sched.swap.dir. Podrá observar que la ruta indicada para dicha entrada no corresponde con el datastore que almacena los archivos de la maquina. Proceda entonces a borrar el contenido dentro de las comillas para forzar a que en el próximo encendido se actualice la entrada.

image

6. Si usó Putty.exe y el comando vi para editar el archivo, presione la tecla Esc, luego escriba :wq! para guardar y salir. Si por el contrario usó WinSCP haga click en el icono de guardar

7. Recargue el archivo de configuración de la máquina virtual en el host ESXi ejecutando el siguiente comando a través de una sesión SSH en el host que aloja la VM

for a in $(vim-cmd vmsvc/getallvms 2>&1 |grep invalid |awk ‘{print $4}’|cut -d \’ -f2);do vim-cmd vmsvc/reload $a;done

8.  Antes de encender la maquina volvamos a Edit Settings | VM Options | Advanced | Configuration Parameter | Edit Configuration…  y verifique que los valores de ctkEnabled y scsix:x.ctkEnabled se encuentren en False, sino es así cámbielos. y haga click en OK hasta cerrar la ventana de configuración de la VM.

9. Encienda la máquina virtual. Si todo ha ido bien la máquina encenderá sin problemas y podrá hacer el vMotion en el estado Powered On como debe ser.

image

REFERENCIAS