Terraform: plataforma de infraestructura como código

 

La Infraestructura como Código (IaC por sus siglas en inglés) es un término para designar herramientas que permiten configurar recursos computacionales de forma automática haciendo uso de archivos de definición declarativos. Es decir, que recursos como los servidores, las bases de datos, las redes y otros elementos de infraestructura como software son creados y configurados de manera programática. Por lo anterior, se puede afirmar que la IaC es un método de automatización del aprovisionamiento y la gestión de la infraestructura TI. Algunas de las ventajas presentadas por esta herramienta son la automatización de despliegues, las actualizaciones controladas, la escalabilidad, la rapidez, la minimización de riesgos y la capacidad para crear un versionamiento de los recursos.

Una de las herramientas usadas por la compañía actualmente a la hora de desplegar la infraestructura por
medio de código es Terraform. Esta es una herramienta de código abierto desarrollada por HashiCorp que permite definir y aprovisionar la infraestructura como código usando un lenguaje declarativo llamado HCL (lenguaje de configuración de HashiCorp). El objetivo de esta herramienta es el aprovisionamiento además del almacenamiento de la configuración de la infraestructura como código. Esto es muy similar a otras tecnologías como CloudFormation usada en AWS (Amazon Web Services); pero en el caso de Terraform esta no depende de una nube en particular, como si es el caso del ejemplo mencionado.

Adicionalmente, es importante resaltar que Terraform tiene soporte para una gran cantidad de proveedores de infraestructura en la nube como lo son AWS, Microsoft Azure u OCI (Oracle Cloud Infrastructure) para el despliegue de la infraestructura como código desarrollado por medio de Terraform. Esto es posible mediante el uso de archivos declarativos, los cuales se encargan de la comunicación con los proveedores mencionados. En un paso posterior a la comunicación mencionada es la revisión de los recursos a crear, modificar o eliminar de acuerdo con las necesidades particulares. Esto es importante debido a que después de esta revisión, solo por medio del uso de un comando, es posible llevar a cabo cualquiera de estas acciones y, por lo tanto, crear modificaciones sobre la infraestructura de la forma deseada. Es decir, después de realizar la comunicación con el proveedor deseado se procede a crear junto con las propiedades y valores los recursos a nivel de infraestructura.

Lo anterior, es posible a la definición previa de componentes de Terraform como lo son los archivos “provider”, “resources”, “modules” y “data”. Así, podemos afirmar que algunas de las características de Terraform son la realización de la orquestación y no solo la gestión de la configuración. Además, de su capacidad de admitir múltiples proveedores, proporcionar una sintaxis simple y unificada que permite describir casi cualquier recurso, proporcionar una infraestructura inmutable donde la configuración cambia sin problemas. La capacidad de reutilizar y compartir las configuraciones que se realizan en Terraform, su escalabilidad traducida en el hecho de poder administrar tanto infraestructuras considerablemente grandes como una sola aplicación si es lo que se requiere. Adicionalmente, los despliegues pueden ser versionados, de esta forma, es más sencillo observar su progreso y así controlar los cambios de la infraestructura.

Otra característica fundamental, que posee Terraform como tecnología es que es una herramienta que puede considerarse “agnóstica” en relación con el proveedor de la nube que se use para su implementación. Es decir, que el código desarrollado por medio de la infraestructura como código puede hacer referencia a elementos particulares del proveedor de nube al que se esté haciendo referencia. Así, se pueden crear los recursos particulares que solicita o identifica cada uno de los proveedores de la nube como lo son AWS, OCI o Microsoft Azure, lo que facilita la implementación de la infraestructura deseada. Lo anterior, a su vez permite que la implementación de la infraestructura para un determinado cliente no esté restringida por la opción de una nube particular, sino que por el contrario de acuerdo a sus necesidades y preferencias se pueda hacer el despliegue de la infraestructura como código con el proveedor de nube acorde a las necesidades y preferencias del negocio, logrando que Terraform sea una herramienta transversal al proveedor de nube en donde se quiera crear una infraestructura particular.

Nuestro equipo Cloud, se encuentra desarrollando un repositorio base cuyo objetivo es crear los recursos más solicitados a nivel de implementaciones de infraestructura en la nube en los tres proveedores de servicios en la nube mencionados anteriormente. La idea principal de este repositorio es que se convierta en un recurso que permita la implementación ágil de infraestructuras a la medida para los diferentes clientes, garantizando beneficios tanto para los clientes como para la organización en sí, principalmente podrán enfocarse en las tareas del negocio en lugar de estar preocupados por su transición o migración a la nube de recursos.

Como compañía el impacto también es innegable, convertir el aprovisionamiento de infraestructuras en la nube como un proceso que pueda realizarse en unas cuantas horas en vez de ser un proceso de días es un gran avance, además, permite a los consultores de las diferentes áreas enfocarse en crear valor para los clientes al prestar servicios de consultoría en temas más críticos e innovadores para ellos.

Por la modularidad con la que cuenta una herramienta como Terraform es posible que el código de la infraestructura pueda ser consultado y modificado solo por las áreas asociadas al mismo. Es decir, se podría tener el código relacionado con las bases de datos de forma separada al código relacionado con la red de la infraestructura, así los especialistas en bases de datos serían los únicos autorizados para acceder al código asociado a su área. Por lo tanto, se podrían evitar cambios o modificaciones a la infraestructura por desconocimiento de los diferentes actores del proceso. Esto garantiza una diversificación del código necesaria para mantener y responder rápidamente a los requerimientos de los clientes cuya infraestructura este desarrollada bajo esta modalidad. Por último, permitirá a los consultores de las diferentes áreas enfocarse en las mejores prácticas y la innovación que podrían aportar con su conocimiento a los diferentes proyectos en los que se encuentren involucrados.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *