¿Qué es Terraform y cómo funciona?
Hoy día se suele encontrar grandes retos por afrontar en el mundo Cloud, como el escalado de las aplicaciones y la definición de una arquitectura válida para el servicio que se pretende expandir. Para esto y para otro tipo de inconvenientes, se cuenta con herramientas como Terraform, capaz de facilitar la codificación de una infraestructura dependiendo de las necesidades, los servicios que se tenga que prestar y con una gran diversidad de proveedores donde depositar la misma, basándonos en eso te contamos ¿Qué es Terraform y cómo funciona?
La infraestructura como código (IaC, Infrastructure as Code) permite elegir herramientas que tramitan recursos computacionales mediante ficheros estructurados. Puede codificar la infraestructura que se quiere y permite que el código sea ejecutado hasta lograr que esta sea aprovisionada y configurada.
Terraform es un programa para gestionar las IaC; define una distribución y sintaxis general para el código y lo ejecuta para alcanzar el cambio deseado. Terraform es, por tanto, declarativo, puesto que se indica, es el estado final que se quiere para la plataforma, no los pasos para llegar a ese estado (lo que sería imperativo).
En el momento en el que se ejecuta Terraform por primera vez, la mayoría de los recursos son creados en función de las entradas indicadas. Estos se marcan con Tags que indican que son negociados por Terraform.
De igual forma, al modificar el código y ejecutarlo, Terraform realizará todos los cambios precisos para llegar al nuevo estado. Así, si algo no puede ser sustituido al momento, será rectificado, y a su vez provoca que se modifiquen todos los dependientes que sean necesarios. Por lo tanto, si un recurso generado con Terraform ya no aparece en su código, será eliminado. También, si el estado actual no coincide con lo codificado, se actualizará.
Aquellos elementos que no fueron generados por Terraform y no han sido importados posteriormente, no serán gestionados por la herramienta y no se actuará ninguna acción con ellos. Es importante tener esto en cuenta y que, en algunas ocasiones, lo que parece un cambio manual, por ejemplo en una consola, en realidad implica la creación de nuevos recursos que no serían gestionados por Terraform, lo que podría derivar en problemas al modificar o eliminar el componente principal.
¿Qué es Terraform y cómo funciona?
Cuando se menciona las IaC, se asocia a los grandes proveedores de Cloud, como AWS, GCP y Azure; lo que puede implicar algo más interesante es que Terraform también es capaz de gestionar otras herramientas como Kubernetes, Grafana, Chef, MySQL, RabbitMQ, Consul, Github, entre otras. Con Terraform se puede gestionar más de 147 clouds, plataformas, sistemas y herramientas. De esta manera, para lograrlo existen los providers; que consiste en partes de software que se encargan de la comunicación con la plataforma o herramienta. También definen su propio conjunto de elementos, con sus propiedades y posibles valores.
Un error común con los providers radica en pensar que existen recursos comunes que después son traducidos a recursos concretos, y no es así. Por su parte, cada proveedor tiene su propio conjunto de recursos y módulos y no existe ningún tipo de traducción entre ellos. Es decir, si se escribe un código para desplegar algo en GCP, no es posible ser directamente trasladado a AWS, es necesario reescribirlo. También, se podría crear algún tipo de módulo de estandarización, que disocie de las diferencias entre ellos. No obstante, al existir conceptos fundamentalmente diferentes, seguramente se terminarían realizando multitud de ajustes hasta descartar la idea.
Las principales funciones de Terraform incluyen informática en la nube, administración de configuración, migración de datos, acceso a registros, seguridad de datos, registros de auditoría, estimación de costos y supervisión del rendimiento. De la misma manera, con el aprovisionamiento en múltiples nubes, los equipos pueden auditar, proteger y regular las instalaciones mediante políticas como código, registros de auditoría y variables cifradas para mantener un flujo de trabajo semejante. Así, el sistema almacena políticas en VCS, lo que permite a los desarrolladores escribirlas, probarlas, validarlas y publicarlas como código para garantizar la seguridad y el cumplimiento en todo el aprovisionamiento en la nube.
En este sentido, brinda capacidades de gestión de equipos que permiten a los gerentes organizar unidades de negocios, usuarios y equipos con control de acceso fundamentado en roles. Y, con la biblioteca de infraestructura aprobada, los equipos pueden atender solicitudes de infraestructura usando módulos predefinidos, así como aprovisionar su propia infraestructura de autoservicio para aumentar la productividad del operador.
Finalmente, el uso de IaC proporciona infraestructura repetible, mantenible, reutilizable, versionada y más estable, y a su vez hace más conscientes a las personas de lo que hace. Por supuesto, requiere algo más de tiempo para escribir el código, especialmente cuando utilizamos una guía donde todo se hace con comandos, aunque, al final, los beneficios compensan con creces este tiempo extra.