He estado pensando en algunas mejoras con respecto al uso de NATS para montar un sistema de pipelines basado en las ideas de la entrada anterior PubSub con NATS y Bash.
PubSub con NATS y Bash (II)
- post
- Xavi Aznar
Photo by Mabel Amber
He estado pensando en algunas mejoras con respecto al uso de NATS para montar un sistema de pipelines basado en las ideas de la entrada anterior PubSub con NATS y Bash.
Bash es increiblemente permisivo, por lo que se ha convertido en mi lenguaje de prototipado por defecto. Combinado con SQLite y Jq, me faltaba una última pieza para completar los diseños: un sistema pubsub. Ahora he encontrado una manera sencilla de integrar NATS (corriendo en Docker) con Bash.
Hace un tiempo encontré el repositorio yaacov/argparse-sh, del autor del artículo argparse.sh: Simple Yet Powerful Bash argument parsing.
Como indica en el post, argparse-sh
es una forma sencilla y potente de gestionar parámetros en Bash.
La idea en la que se basa, creando un array asociativo (un dictionary
en Python), me recordó a Cobra, en Go.
Pese a ser una library pequeña, permite definir parámetros obligatorios y opcionales, un mensaje de ayuda para cada parámetro, diferentes tipos de parámetros…
La “única pega” es que, debido a que usa arrays asociativos, require Bash 4 o superior.
Así que me puse manos a la obra para hacer un backport y hacerlo compatible con Bash 3 (la que hay por defecto en los Mac).
Cloud Workstations nos permite tener la misma máquina a todos los miembros del equipo, independientemente de si usamos un Mac o un equipo con Windows. Partiendo de una imagen de contenedor, podemos desplegar una máquina virtual y usar Code OSS (la versión open source de Visual Studio Code) con las mismas extensiones pre-instaladas, la misma configuración, etc…
Quiero presentar el script a mis compañeros antes de subirlo a Github, así que en la entrada de hoy me voy a centrar en explicar cómo he simplificado el número de parámetros requeridos para gestionar (crear/arrancar/detener/eliminar) una workstation sin tener que recordar (o conocer) el nombre del clúster, de la configuración usada, etc…
Este artículo es la segunda parte de Unmarshal JSON en Bash (Parte I).
Al final de la primera parte vimos cómo el MVP (minimum viable product) no producía el resultado esperado para keys en el documento JSON cuyo valor es un array o un object.
En esta segunda parte, vamos a resolver este problema.
Unmarshal es uno de esos verbos ingleses que es difícil de traducir al castellano, al menos para mí. Según Google, sería algo así como “desmantelar”.
Aplicado a la programación, “to unmarshal” está relacionado con la idea de que, partiendo de un contenido ordenado, en JSON, desperdigamos su contenido en variables que podemos utilizar en nuestra aplicación.
Go, por ejemplo, proporciona la función Unmarshal, sin embargo en Bash, no he encontrado nada parecido.
Ha pasado muuuucho tiempo desde la última publicación; lo cierto es que todo se ha debido a que, principalmente, he pasado a usar otro portátil como mi dispositivo desde el que “hago cosas”, y por pereza, no había clonado el repositorio de este blog.
Pero hoy he decidido acabar con esta situación… y lo primero que me he encontrado al reconstruir el blog ha sido el error:
.Site.GoogleAnalytics was deprecated in Hugo v0.120.0 and will be removed in Hugo 0.133.0. Use .Site.Config.Services.GoogleAnalytics.ID instead.
Después de un tiempo cogiendo polvo, he decidido darle una segunda vida a mi antiguo equipo de laboratorio. Aunque se trata de un sólo equipo, quería practicar con Ansible para automatizar la instalación de Docker. No quería instalar Ansible en mi equipo y pensé que lo ideal era usar un contenedor como máquina de control. Sin embargo, no he encontrado ninguna imagen (fiable/actualizada) de Ansible en DockerHub, por lo que me animé a construir la mía.
En este artículo, explico cómo.
Al intentar actualizar la máquina en la que el otro día instalé Docker (usando Ansible), me he encontrado con el error key is stored in legacy trusted.gpg keyring
.
En este artículo explico cómo lo he solucionado.
El otro día @PeladoNerd confesaba en este vídeo SADSERVERS / Kihei, Unimak Island, Ivujivik (MEDIUM) que no entendía como funcionaba Jq. Inmediatamente empaticé con su frustación; es, sin duda, un sentimiento generalizado.
Jq es una herramienta realmente potente; pero “con un gran poder”, llega una curva de aprendizaje muy dura.
Por eso me he decidido a escribir este artículo: no porque sea un super gurú de Jq, que no lo soy; pero creo que puedo aportar algo de claridad sobre la manera de aproximarse a Jq evitando los problemas más habituales.