Inicio
Blog
De Terraform a Terraform Cloud. Parte 1, los inicios.
DFL-ecommerce, Cloud, Infraestructura

De Terraform a Terraform Cloud. Parte 1, los inicios.

 Conociendo Terraform

Terraform es una de las herramientas más usadas y demandadas para el despliegue de infraestructura como código (IaC, por sus siglas en inglés). No podemos ir directamente a Terraform Cloud sin antes abordar aspectos esenciales de nuestra organización, que hacen de esta herramienta un elemento indispensable de nuestro día a día.

Su uso por parte de los equipos de DevOps es fundamental en aras de organizar, orquestar y mantener actualizada infraestructuras, desde las más pequeñas hasta las más complejas. Existen varias formas en las que los especialistas organizan y estructuran sus proyectos en Terraform para desplegarlos.

En tanto, se integra con un gran número de plataformas en la nube como AWS, GCP, Azure y otras enfocadas más en manejar servidores on premise como VMware, OpenStack. La posibilidad de manejar recursos y componentes en múltiples plataformas es gracias a su esquema de plugins, los cuales dan un alto nivel de flexibilidad y versatibilidad.

Posee un alto nivel de compatibilidad para funcionar sobre varios sistemas operativos, tanto en Microsoft Windows, como en macOS y en sistemas basados en GNU/Linux como Ubuntu.

Edición de proyecto de Terraform en Visual Studio
Edición de proyecto de Terraform en Visual Studio

 

¿Cómo lo usamos?

En Dofleini Software lo usamos para gestionar la infraestructura de proyectos sin importar la envergadura, el alcance o la arquitectura de estos.  En nuestro día a día, usando esta herramienta mantenemos siempre como premisa la aplicación de buenas prácticas:

  • Versionar todo el código escrito y mantenerlo actualizado.
  • No almacenar nunca el estado del proyecto de Terraform de forma local.
  • Colocar el estado del proyecto en puntos accesibles para todos los DevOps, pero sin acceso público.
  • Fragmentar en módulos los bloques de componentes dentro de carpetas.
  • Usar las versiones más recientes de Terraform.
  • Plataforma DFL Ecommerce desplegada su infraestructura con Terraform.

Bajo esos principios se garantiza una buena organización del trabajo realizado, se facilita el traslado del conocimiento para su uso entre DevOps y se le da satisfactoriamente cobertura a todas las necesidades vinculadas a despliegues.

El salto a Terraform Cloud

¿Qué es?

Es una aplicación que funciona como un servicio en línea, puede ser accedido desde aquí. Se encarga de gestionar las ejecuciones de cada despliegue, llevando un control del estado de las mismas. Básicamente es un Terraform con funcionalidades orientadas a la nube, estructurado en Organizaciones y Espacios de trabajo, dentro de los cuales se inserta cada proyecto.

Los proyectos se pueden integrar por 3 vías:

  • Con un sistema de control de versiones para centralizar su uso.
  • Con un proyecto local a través del CLI.
  • Con la API de Terraform para despliegues más avanzados y a gran escala.
Variantes de integración de Terraform Cloud con un proyecto en Terraform
Variantes de integración de Terraform Cloud con un proyecto en Terraform

Ventajas

Terraform Cloud cuenta con un número importante de ventajas que se resaltarán a continuación:

  • Se pueden agregar de forma segura variables de entorno que por cuestiones de seguridad no deben ser subidas a repositorios, estas son pasadas hacia el proyecto de Terraform una vez que este se integra con el servicio de Terraform Cloud.
  • Almacena historial de todos los estados por los que ha pasado el despliegue del proyecto así como de cada ejecución realizada.
  • Se integración con varios sistemas de control de versiones.
  • Permite el acceso compartido a múltiples usuarios.
  • Muestra información sobre los commits y detalles de estos en el repositorio.
  • Permite desde la web, con los permisos adecuados, crear y destruir infraestructura.
  • Lista los recursos creados así como toda la información de salida generada por la última ejecución.
  • Permite configurar el proceso de CI/CD entre el repositorio y el espacio de trabajo.

 

Vista general de un espacio de trabajo en Terraform Cloud
Vista general de un espacio de trabajo en Terraform Cloud

 

Integrando con GitLab

Integrar repositorios con Terraform Cloud es un proceso sencillo que se inicia una vez se crea un espacio de trabajo dentro de una organización, o bien puede hacerse en la configuración general de la organización.

El propio proceso de crear el espacio de trabajo nos lleva al paso de seleccionar el tipo de integración; en este caso sería con un sistema de control de versiones (CVS) y luego se configura el proveedor, integrándolo en este caso con GitLab. El proceso es sencillo, se registra Terraform Cloud como una aplicación en GitLab, se intecambian los secrets que se generen en ambas partes y estará lista la integración.

La selección del repositorio, como se muestra en las próximas imágenes, nos ayudará a integrar el proyecto deseado, ya que tendremos acceso a todos los repositorios a los que el usuario utilizado tenga los permisos necesarios.

Selección de la plataforma de control de versiones
Selección de la plataforma de control de versiones

 

Selección del proyecto a integrar
Selección del proyecto a integrar

Con todo integrado y existiendo la comunicación necesaria en este caso entre Terraform Cloud y GitLab se sube el código al repositorio, en nuestro caso uno sencillo para crear un Bucket en AWS S3. Desde la estación local donde se trabaje, se pueden ejecutar sentencias de tipo terraform plan, pero no un terraform apply.

Una vez que el código es subido, un nuevo Pipeline es desencadenado por GitlLab-CI. Este mostrará el estado final de su ejecución en Terraform Cloud, así como otros detalles propios de los Pipelines en esta plataforma.

Pipelines de GitLab integrados con Terraform Cloud
Pipelines de GitLab integrados con Terraform Cloud

En la siguiente imagen se aprecian los detalles del último Pipeline ejecutado en GitLab luego de una subida de código hacia el repositorio. Con el nombre de “Changed S3 name”, dicho commit desencadenó la ejecución en Terraform Cloud del proyecto en cuestión.

Los detalles de cada ejecución en Terraform Cloud muestran el resultado de la planificación de los cambios (si es pasada o no satisfactoriamente) así como de la aplicación de los mismos, listando incluso los recursos creados/modificados/eliminados. De igual forma almacena quién autorizó finalmente el despliegue (el aplicar cambios puede configurarse para funcionar automáticamente o no).

Detalles de una ejecución en Terraform Cloud
Detalles de una ejecución en Terraform Cloud

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 10

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Déjanos tu comentario