Terraform, un aliado en la infraestructura de software
Terraform está ayudando a mantener un control más organizado y accesible sobre la infraestructura y a automatizar tareas en esta área.
Terraform está ayudando a mantener un control más organizado y accesible sobre la infraestructura y a automatizar tareas en esta área.
POR IRAK MIGUEL / SRE II DEVOPS
Los viejos "alquimistas del software" recordarán todas esas historias dantescas que ocurrían al levantar un servidor, como los pasos que se requerían, e iban desde cablear un rack, instalar una bahía de discos duros o un KVM (switch de Keyboard, Video, Mouse), hasta lo tortuoso de instalar un Sistema Operativo Linux con sus drivers y makefiles. Afortunadamente, ahora contamos con alternativas que reducen costos operativos y económicos, entre las que se encuentran Terraform, que es una solución novedosa y robusta para trabajar infraestructura.
Antes entendíamos a la infraestructura como el conjunto de periféricos físicos, softwares y cableados que constituyen y ayudan a operar un servidor. Ahora agregamos al concepto un nuevo término: plataforma en nube, que es un conjunto de herramientas que habitan en servidores virtuales y que nos permiten albergar nuestros desarrollos.
Esto nos lleva a enfrentar nuevos retos y a buscar apoyo en nuevos aliados para resolverlos. Terraform es uno de ellos, pues nos permite instalar firewall, discos duros virtuales e imágenes de Linux o Windows de forma sencilla y ágil.
Terraform es una herramienta desarrollada por HashiCorp, basada en el principio IaC (Infrastructure as Code) y cuyo objetivo es que los desarrolladores puedan gestionar la infraestructura de forma declarativa y ordenada.
Con este software se puede definir y desplegar infraestructura en diferentes servicios proporcionados por proveedores como Amazon Web Service (AWS), Microsoft Azure, Google Cloud Platform (GCP), entre otros más.
Lo interesante de todo esto es que, en su mayoría, los proveedores de servicios en la nube ofrecen interfaces gráficas diseñadas bajo la biblia de UIX y pensadas para dummies, las cuales nos van ayudando a instalar y a administrar de manera "sencilla" infraestructura robusta y sólida.
Entonces, ¿para qué complicar el proceso con Terraform si palomeando una casilla o eligiendo algunos elementos de una lista podemos levantar una infraestructura confiable?
Pues la solución a esta pregunta, y quizá a otras más, es que Terraform y su fina transformación, Terragrunt, dan a nuestra infraestructura cualidades, como reproducibilidad, automatización, portabilidad, paralelismo y colaboración.
Aunque Terraform resuelve todos los desafíos planteados por sí solo, Terragrunt es un wrapper que permite organizar de manera más eficiente y segura la infraestructura.
Terragrunt permite la reutilización de código, una gestión de estados que evita las colisiones en los cambios que realizan los miembros del equipo y un manejo más eficiente de las variables, entre otras cosas más que facilitan el manejo de Terraform.
Aprender Terraform suena complicado si lo vemos desde el punto de vista de que existen muchos componentes entre todos los proveedores de infraestructura y de que cada proveedor tiene sus propias configuraciones. A continuación, mencionamos sus conceptos más básicos:
1. init: prepara tu directorio de trabajo para otros comandos.
2. validate: verifica si la configuración es válida.
3. plan: muestra los cambios requeridos por la configuración actual.
4. apply: crea o actualiza la infraestructura.
5. destroy: destruye la infraestructura creada previamente.
En los años recientes, Terraform se ha convertido en un aliado para los especialistas en ingeniería de confiabilidad del sitio (SER, por sus siglas en inglés) y la cultura del DevOps, ayudándolos a automatizar tareas de infraestructura, pero también a mantener un control más organizado y accesible sobre la infraestructura.
Por eso, cada vez más organizaciones y empresas lo implementan para el control de su infraestructura, lo cual lo vuelve de interés general y un motivo más para conocerlo.