11

Terraform: una herramienta para automatizarlos a todos

49917Puntos

hace 5 años

El software se ha comido al mundo y la complejidad para elaborar este software ha subido. De un tiempo para acá ya no se necesitan únicamente desarrolladores backend o frontend, ahora surge la necesidad de ingenieros enfocados totalmente al diseño y creación de infraestructuras para el software. Estos son los tan famosos y deseados DevOps Engineers que entre algunas de sus responsabilidades están:

  • Dominar el uso de Cloud Providers como AWS, Azure o Google Cloud para crear infraestructuras que desplegar aplicaciones, actualizaciones o arreglos de bugs.
  • Solucionar problemas de producción y coordinar a su equipo de desarrollo para resolver rápido el problema.
  • Implementar automatización de despliegue para Integración Continua y Despliegue Continuo (CI/CD).
  • Optimizar la arquitectura de software de la empresa.

De estas responsabilidades es que nace la infraestructura como código cuyo enfoque es la automatización de infraestructura tomando algunos de los principios del desarrollo de software:

1. Los sistemas se pueden reproducir fácilmente

Tienes un archivo donde vas a definir tu infraestructura, sabes lo que quieres crear.

2. Los sistemas son desechables

Si un servidor falla simplemente desechas ese servicio y creas de manera rápida una nueva instancia.

3. Los sistemas son consistentes

Tu archivo de definición es tu única fuente de la verdad. Todo sistema que instancies va a seguir las mismas especificaciones que le indiques en tu archivo de definición.

4. Los sistemas son repetibles

Escribe una definición de tu sistema una vez y utiliza este archivo la cantidad de veces que sean necesarias.

5. El diseño siempre está cambiando

Una vez plasmada la definición de tu sistema es más sencilla darle seguimiento a los cambios que generes y ver qué cosas te hacen falta implementar.

Esto trae consigo varios beneficios y buenas prácticas como:

  • Los procesos y sistemas que se crean se autodocumentan.
  • Permite versionar tu código logrando visibilidad y trazabilidad de cada cambio realizado…
  • Optar por las iteraciones rápidas y cambios pequeños.
  • Mantener los servicios continuamente disponibles y en caso de necesitar más servicios se pueden crear bajo demanda.
  • Automatización, creación y configuración de infraestructura sin intervención humana logrando CI y CD.
  • Ambientes homogéneos. Misma definición para múltiples ambientes.

Terraform, tu mejor herramienta

Terraform es una herramienta open source escrita en Go que sigue el enfoque de infraestructura como código. La gran ventaja de usar Terraform frente otras herramientas es que dentro de su lógica Terraform lo que hace es interactuar con las APIs de los proveedores de nube, ya sean nubes públicas como Azure, AWS o Google Cloud Provider o privadas como OpenStack.

Gestión de configuraciones vs definición de infraestructura

Terraform permite crear infraestructura mientras que herramientas como Ansible nos ayuda con su configuración. Uniendo estas dos herramientas tienes un control total de tu infraestructura.

Instancias inmutables

Dentro de Terraform las instancias de infraestructura se manejan de manera inmutable, si realizaste algún cambio sobre tu archivo de definición de un servidor, entonces este servidor se destruye y se crea uno totalmente nuevo.

Lenguaje declarativo vs procedural

Ansible sigue el lenguaje procedural, esto significa que debes indicar los pasos a seguir para configurar la infraestructura, programar el cómo hacer las tareas.

Mientras que en Terraform utilizamos el lenguaje declarativo, nosotros definimos las configuraciones que queremos y Terraform se encarga de realizarlo, programamos el qué.


Si eres DevOps o quieres iniciarte en este increible mundo de la infraestructura como código para agilizar los despliegues de tus aplicaciones te invito a que tomes el Curso de Infraestructura como código con Terraform.

Demian
Demian
demian

49917Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
2
17227Puntos
3 años

Un poco tarde el comentario, acabo de terminar el curso y los puntos expresados aquí dan un buen abre boca de lo que vas a conseguir. Terraform es una herramienta poderosa y lo mejor es que ha evolucionado rápidamente en los últimos años

1
5 años

Muy buen artículo. No conocía Terraform y siempre me preguntaba qué significaba DevOps