A lo largo de los años, muchos desarrolladores que sabían de sistemas hemos estado trabajando con mucha ilusión con gran cantidad de herramientas de múltiples disciplinas, con el afán de facilitarnos el trabajo a nosotros mismos y a nuestros compañeros.
Esta forma de ver las tecnologías y nuestro interés en automatizar, monitorizar y mejorar continuamente nos ha valido tener un hueco en las empresas. Nuestra etiqueta es DevOps. Un nombre que hoy en día todavía no se comprende, pero que promete grandes mejoras en los proyectos rompiendo las clásicas estructuras empresariales.
Cuando podemos movernos libremente entre departamentos, vemos lo ágiles que somos frente a cambios, pero esto no sería posible sin un ecosistema favorable a nuestros intereses, y en ese ecosistema surgieron gran cantidad de herramientas que sirven a nuestros propósitos.
Las herramientas DevOps no han surgido para alimentar a los DevOps y a su filosofía, sin embargo, el hecho de que estas herramientas existan han provocado un ecosistema perfecto para que la gente que tenía ciertas necesidades acaben convirtiéndose en DevOps sin saberlo.
Vamos a comentar algunas de las herramientas que utilizamos para automatización.
Vagrant
Se trata de una tecnología de virtualización basada en el lenguaje Ruby que permite, por medio de un fichero de texto sencillo, parametrizar una máquina virtual.
Junto con Vagrant cloud, que es un repositorio de imágenes base, se postula como una herramienta multiplataforma sencilla de manejar y muy potente.
Es posible desde iniciar una máquina virtual con un número de cores y una memoria determinada, hasta indicar órdenes precisas para que instale software basado en provisionadores, siendo el shell el más común.
Ansible
Se trata de una solución basada en Python, similar a Puppet, Chef o SaltStack.
Sin embargo, es una de las soluciones con una curva de aprendizaje más alta, y además no es necesario implementar una infraestructura mínima.
Sirve para realizar un aprovisionamiento de software en los sistemas con un gran punto a nuestro favor, la garantía de realizar scripts idempotentes, es decir, que si hacemos las cosas bien, podemos lanzar el mismo script múltiples veces con idénticos resultados.
Como funcionalidad extra, podemos usar estos scripts idempotentes para comprobar si se han realizado cambios y notificar en caso afirmativo sin cambiar nada.
Terraform
Solución orientada a cloud que permite trabajar a nivel de multicloud.
Podemos crear, con un lenguaje de dominio sencillo, en distintas clouds distintos recursos en una sola operación. Sin embargo, no sirve para hacer lo mismo en diferentes clouds por la propia naturaleza de los mismos (no existen exactamente los mismos servicios en todas las clouds).
En resumen…
Estas tecnologías son compatibles con herramientas de provisionamiento, es decir, que podemos crear infraestructura como código (IAAC) con Terraform y Ansible o una tecnología similar.
Estos son solo unos pocos ejemplos, pero desde aquí, podemos crear infraestructura a muchos niveles: desde preparar la máquina de un nuevo desarrollador, automatizar la creación de entornos, su creación, pruebas y posterior destrucción, e incluso la gestión, operación y monitorización de un entorno de producción.
Y esto solo es el principio…