Convertir CloudBuilder Excel file a JSON!

Convertir CloudBuilder Excel file a JSON!

A white rectangular frame with blue and white text

Description automatically generated

Creo que el primer paso para levantar un entorno de VMware SDDC (VCF) es completar el documento de Excel (Deployment Parameter Workbook), este documento lo podemos ver como la receta con la cual se construira nuestro entorno SDDC.

Hace unos meses me encontré con la necesidad de automatizar la creación de un SDDC y tenia a mano el Paramenter Workbook, sin embargo, utilizar este documento de Excel en Ansible creo que no sería una tarea fácil y tampoco tengo el tiempo o conocimientos para lidear con eso.

CloudBuilder, es la VM que necesitamos desplegar inicialmente para proceder con la parametrización de nuestro entorno SDDC. CB nos permite hacer llamadas API (https://developer.vmware.com/apis/vcf/latest/), pero primero debemos convertir ese documento en Excel a JSON.

Dentro de CB contamos con una herramienta la cual nos permite hacer exactamento eso!

He visto muchos blog-post que ya nos presentan el archivo en JSON, pero creo que, si necesitamos hacer cambios, la manera más rápida y cómoda es editar el Paramenter Workbook.

Supportability and Serviceability (SoS) Utility

https://docs.vmware.com/en/VMware-Cloud-Foundation/5.1/vcf-admin/GUID-8B3E36D5-E98B-47CF-852A-8C96F406D6E1.html

SoS además de permitirnos convertir excel a json, es una herramienta CLI que se puede usar para revisar la salud y colectar logs de un ambiente VCF.

sudo /opt/vmware/sddc-support/sos --help

sudo /opt/vmware/sddc-support/sos -h

En nuestro caso, primero debemos colocar nuestro documento excel en el home-directory del usuario admin, esto lo podemos hacer con WinSCP o scp (si estas en macOS o Linux), ya con el documento en el home-directory, procedemos a convertirlo a json usando el siguiente comando.

/opt/vmware/sddc-support/sos --jsongenerator --jsongenerator-input /home/admin/CB-Workbook.xlsx --jsongenerator-design vcf-ems

Ahora se preguntarán, que hago con este archive en JSON?

Automatizar ¡!

En mi caso particular, la forma más rápida de crear un entorno de pruebas es automatizando el proceso, el cual está basado en Ansible usando AWX como UI.

En este caso particular usaremos el mismo host de CloudBuilder para lanzar la creación del SDDC, para esto usaremos cURL.

curl 'https://localhost/v1/sddcs/validations' -i -u 'admin:VMware1!' -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '@vcf-ems.json'

Se iniciará un proceso de validación el cual se puede monitorear usando el ID que nos devuelve el POST anterior.

curl 'https://localhost/v1/sddcs/validations/<ID>/report' -i -u 'admin:VMware1!' -X GET \
-H 'Content-Type: application/json’

En esta respuesta nos interesa:

executionStatus – este campo puede tener un valor entre IN_PROGRESS o COMPLETED.

resultStatus – este campo puede tener un valor entre SUCCEEDED o FAILED.

Podríamos continuar siempre que executionStatus sea igual a COMPLETED y resultStatus sea igual a SUCCEEDED.

curl 'https://localhost/v1/sddcs' -i -u 'admin:VMware1!' -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '@vcf-ems.json'

La diferencia ahora es que la llamada API se hace directo a /v1/sddcs y la anterior la hicimos a /v1/sddc/validations.

Ya todo depende de que tan rapido sea el ambiente en el cual se esta ejecutando la creacion del entorno SDDC, en mi caso, en un ambiente nested, esto tomaba alrededor de 2 horas y 30 minutos.

Si se preguntan, porque pasar por todo esto si podiamos usar el Web UI de CloudBuilder?

La respuesta es que de esta manera podemos tener un ambiente que puede ser solicitado en demanda por otros miembros de un equipo, en mi caso lo usamos para crear ambientes de prueba donde validamos ciertas configuraciones de VCF y necesitamos una forma rapida de crear SDDC sin intervencion humana!