miércoles, 28 de agosto de 2019

Draft, simplificando aún más el desarrollo con Kubernetes

El desafío constante: como reducir los tiempos desde que un desarrollador genera una actualización hasta que es probada.
Usualmente al desarrollar debemos seguir un proceso para desplegar nuestro código. Este proceso era muy extenso años atrás y con DevOps se ha simplificado notablemente.
Un ejemplo muy básico involucrará ingresar a un Jenkins, para construir (build) nuestra aplicación y posteriormente hacer el despliegue (deploy). En la realidad añadimos otras herramientas, haciendo este flujo algo no tan trivial. Justamente ahí es donde entra Draft, a integrar nuestro ambiente de desarrollo con Kubernetes, permitiéndonos hacer un despliegue en un par de pasos: "draft create" y "draft up", así de simple.

Con esto tendremos nuestra app desplegada en un sandbox de Kubernetes disponible con su URL publicada. Draft nos entrega entonces un gran potencial, simplificando y reduciendo los tiempos de generación de un sandbox aún más allá de lo que hemos visto en el ciclo de DevOps, dejándonos listos para ejecutar las pruebas iniciales de nuestro desarrollo.

Si quieres probar Draft, necesitarás Kubernetes evidentemente además de Draft. Sin embargo puedes usar minikube en reemplazo, que te dará lo necesario para tus pruebas de concepto.

Minikube está disponible para descargas en https://minikube.sigs.k8s.io/docs/start/windows/
Para descargar draft, puedes hacerlo con brew (brew install azure/draft/draft) o desde este link de binarios https://github.com/Azure/draft/releases
Una vez instalado, simplemente ejecutas :
  • draft init para configurar draft
  • draft create, para contenerizar tu app 
  • draft up, para desplegar tu sandbox.
Happy Sailing!


martes, 6 de agosto de 2019

Buscar los ultimos archivos modificados en Linux

Hace un tiempo pensé en publicar respecto al tópico que expongo hoy, sin embargo pensé que al ser un tema muy conocido no sería de interés. Después de un poco andar, me di cuenta que no resulta tan trivial y que puede ayudar a algunas personas que existan artículos como éste y en particular en español, por lo que decidí retomar y publicar un par de artículos, partiendo por este.
Quisiera sus comentarios, de si encuentran esta información útil o no, para ver si sigo haciendo publicaciones como ésta.

Problemática: por que buscar los últimos archivos modificados en Linux

Por diferentes razones tal vez queremos buscar los ultimos archivos modificados en Linux. Razones como, por ejemplo:
  • Instalé un programa y quiero saber que archivos modificó
  • Tengo una actualización y quiero saber el / los filesystem que está ocupando
  • Quiero identificar los archivos modificados recientemente
Cuando pensamos en buscar los ultimos archivos modificados en Linux, lo primero que se nos viene a la cabeza es usar el comando find, pero find es muy amplio y necesitamos acotar y esa es la razón de este artículo, algunas opciones que nos permitan acotar la búsqueda.

Solución: buscar los ultimos archivos modificados en Linux

En esta solución expongo dos simples opciones que combino:
  • Filtrar por tiempo
  • Filtrar directorios no relevantes

Filtrando los resultados de búsqueda: por tiempo, últimos modificados

Para filtrar por los ultimos archivos modificados en el tiempo podemos usar el parámetro cmin. cmin nos permitirá especificar una cantidad de minutos hacia atrás, buscando archivos que fueron modificados desde el momento actual hasta x minutos atrás.
Por ejemplo:

$ find . -cmin -30

En este ejemplo, find buscará archivos en el directorio actual (.) que fueron modificados hace 30 minutos (o menos)

Esto resuelve nuestro problema y podría quedar hasta ahí, pero en ocasiones, la busqueda retornará resultados de directorios que no nos interesan. Entonces iremos un paso más allá en el filtro, con la siguiente opción de búsqueda.

Filtrando los resultados de búsqueda: excluyendo directorios

Si, por ejemplo, hacemos una busqueda desde el directorio raiz (/) el resultado arrojará archivos modificados en los directorios /proc /var /sys, entre otros, que en la mayoría de los casos no son de interés ya que son directorios de sistema y no de una aplicación. Para filtrar los directorios "indeseados" usamos la opción -prune

Excluyendo un directorio

Para excluir solo un directorio ocupamos la opción prune con el flag o, como se muesta a continuación:

$ find / -path /proc -prune -o -cmin -30

Esto buscará en el directorio raiz (/) todos los archivos modificados en los últimos 30 minutos, excluyendo los que están el el directorio /proc

Excluyendo varios directorios

Para excluir varios directorios, listamos los directorios entre paréntesis, pudiendo añadir todos los directorios que queremos excluir

$find / \( -path /proc -o -path /sys -o -path /run -o -path /var \) -prune -o -cmin -30

Esto buscará en el directorio raiz (/) todos los archivos modificados en los últimos 30 minutos, excluyendo los que están el los directorios /proc , /sys , /run y /var