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!

 

Organiza tu .dotfiles con GNU Stow.

Organiza tu .dotfiles con GNU Stow.

Logo

Primero definamos la necesidad de GNU Stow (Stow en lo adelante), si tienes acceso a diferentes equipos, ya sea laptops (Linux o macOS), desktops (Linux o macOS) y servidores Linux (quien usa macOS en servidores?), talves has notado lo incomodo que es tener una configuracion de shell bien customizada pero cuando entras a otro equipo por ssh, hechas de menos todos esos alias y otras utilidades. Stow es la solucion para llevar estas customizaciones a otros entornos *nix.

En mi caso, tengo dos equipos de uso diario, Macbook Pro M1 y un Mac Mini M2. En ambos uso zsh como shell y tengo las mismas customizaciones ya que he instalado los mismos paquetes.

Oh My ZSH! (https://ohmyz.sh/)

Es un framework que maneja las configuraciones que se pueden aplicar a ZSH. Con esta herramienta podemos tener prompts, plugins y temas.

Continuar leyendo «Organiza tu .dotfiles con GNU Stow.»

kubeconfig con direnv, múltiples clusters de Kubernetes.

kubeconfig con direnv, múltiples clusters de Kubernetes.

Desde la documentación de Kubernetes:

Utilice los archivos kubeconfig para organizar la información acerca de los clústeres, los usuarios, los Namespaces y los mecanismos de autenticación. La herramienta de línea de comandos kubectl utiliza los archivos kubeconfig para hallar la información que necesita para escoger un clúster y comunicarse con el servidor API de un clúster.

Nota: Un archivo utilizado para configurar el acceso a los clústeres se denomina archivo kubeconfig. Esta es una forma genérica de referirse a los archivos de configuración. Esto no significa que exista un archivo llamado kubeconfig.

Por defecto, kubectl busca un archivo llamado config en el directorio $HOME/.kube. Puedes especificar otros archivos kubeconfig mediante la configuración de la variable de entorno KUBECONFIG o mediante la configuración del flag –kubeconfig.

Cuando contamos con un solo cluster de k8s, es bastante fácil conectarse a el usando kubectl con solo colocar el archivo config en .kube (como dice el texto anterior). ¿Pero que pasa cuando tenemos varios servidores de k8s con los cuales queremos interactuar para realizar ciertas tareas?

Continuar leyendo «kubeconfig con direnv, múltiples clusters de Kubernetes.»

homelab – update – 2023:02:01

Ya no recuerdo cuando inicie con esto de operar un homelab, y en realidad ya es algo que forma parte de como aprendo nuevas tecnologías y por mas que exista la “nube”, es muy costoso para los productos/soluciones que pruebo en los equipos que tengo en mi casa.

En este update verán como he dejado de usar los Dell R420 y me he pasado a equipos con menos consumo.

pathvector – herramienta para configurar BIRD!

pathvector – herramienta para configurar BIRD!

Hace tiempo que estoy usando BIRD para convertir esos servidores Linux en routers con BGP/OSPF y tener enrutamiento dinámico. Uno de los obstáculos iniciales con BIRD era la sintaxis, muy diferente a Cisco y a Quagga (Ahora FRR), sentirme a gusto me tomo tiempo, pero se logro.

De ese cambio ya hace mucho tiempo, el segundo paso luego de usar BIRD es lo fácil que se puede automatizar su configuración, algo que hice en los primeros días era tener los archivos de configuración en Git para así poder versionarlos, luego usaba un contenedor Docker el cual generaba las configuraciones finales, lamentablemente cada herramienta o metodología tenia sus propios problemas y terminaba haciendo configuraciones manuales fuera de la herramienta que intentaba adoptar.

Continuar leyendo «pathvector – herramienta para configurar BIRD!»