PoC Terraform
DevOps
Declarativo
Imaginemos que queremos ir de punto A al punto B en coche, nos subimos lo arrancamos y vamos hacia nuestro destino. Esta analogía es muy usada ya que eso sería lo que antiguamente haríamos cuando se nos pedía un servidor con ciertas características. Ahora con IaC únicamente nos hace falta saber nuestro destino, que es lo que queremos implementar y Terraform se ocupará de todo el tedioso proceso de implementarlo en nuestro proveedor.
Los siguientes pasos determinan un flow de trabajo con Terraform:
Identificación de los recursos necesarios para nuestra arquitectura, por ejemplo una EC2, una VPC y un S3.
Preparación de los archivos tf en los cuales definimos los recursos, con sus atributos (nombre, tamano de instancia etc etc...)
Planeamos el despliegue, Terraform posee un verbo plan en su CLI este comando nos permite ver de manera versionada todo lo que se creará y todo lo que se destruirá.
Aplicamos los cambios, Terraform posee un verbo apply en su CLI el cual nos permite aplicar los cambios previamente planeados contra el proveedor seleccionado.
.
Conectable
Terraform no sólo es Open Source, sino que también es conectable. Con esto nos referimos a que podemos trabajar de una manera muy modular con Terraform debido a que es capaz de entender módulos, sean propios o externos a la vez que herramientas de terceros que complementan Terraform ya sea Terragrunt.
DevOps lo primero
Devops como cultura nos hace pensar que los cambios y despliegues manuales deberían de ser erradicados de la faz de la tierra, por desgracia sigue habiendo. Es por eso que Terraform simplifica los despliegues de cualquier proveedor. Terraform fue diseñado con una cosa en mente, que DevOps fuera siempre lo primero.
Esto se consigue de varias maneras:
La primera de todas es la manera en la que resuelve dependencias, si nosotros hoy desplegamos una versión 1.0 de una arquitectura y el día de mañana queremos desplegar una versión 2.0, no tenemos que destruir nada, simplemente aplicamos nuestros cambios. Terraform realizará un diff con lo que él ya conoce que está desplegado y aplicará los cambios restantes.
La segunda, es que Terraform fue pensado para que un equipo entero de arquitectos pueda realizar cambios dinámicos contra un mismo proyecto a la vez. Cuando aplicamos cambios Terraform genera una serie de archivos los cuales guardan toda la información relacionada con la infraestructura ya desplegada. Cuando otra persona desea realizar un cambio, Terraform leerá esos archivos y sabrá en qué punto de la arquitectura se encuentra.
Fiabilidad
La fiabilidad que nos puede dar Terraform en conjunción con los proveedores Cloud actuales es muy grande. El mero hecho de poder definir plantillas que nos sirvan para desplegar nuestra infraestructura de manera dinámica y sin error humano es bastante agradable.
Consejos
Os dejamos unos consejos para los que quieran ir aprendiendo de Terraform,
Apoyaron mucho en la documentación, puede parecer una tontería pero hashicorp explica muy bien su documentación y pocas veces he tenido problemas con ella.
Usarlo y mucho. Cuando más se use mejor se va a comprender su funcionamiento.
Cuanto más os acostumbreis a usarlo antes que hacerlo a mano mejor.
Escriba un comentario
Usted debe ser registrado escribir un comentario.