¿Qué es Terraform?
Esta guía describe todo lo que necesita saber sobre Terraform, una herramienta que permite a los programadores crear, cambiar y versionar la infraestructura de forma segura y eficiente.
Fondo negro y azul
¿Qué es Terraform?

Terraform es una herramienta de código abierto de "Infraestructura como código" creada por HashiCorp.

Terraform es una herramienta de codificación declarativa que permite a los desarrolladores utilizar un lenguaje de configuración de alto nivel llamado HCL (HashiCorp Configuration Language) para describir la infraestructura final deseada, en local o cloud, para ejecutar una aplicación. A continuación, elabora un plan para obtener ese resultado final y lo ejecuta para suministrar la infraestructura.

Actualmente, Terraform es una de las herramientas de automatización de infraestructura más populares del mercado, ya que utiliza una sintaxis simple, puede suministrar la infraestructura en múltiples centros de datos en local y cloud, y puede volver a suministrar la infraestructura de forma segura y eficiente en respuesta a los cambios de configuración. Si su organización tiene previsto desplegar un entorno de cloud híbrido o multicloud, es probable que quiera o necesite conocer Terraform.

¿Por qué optar por una infraestructura como código (IaC)?

Para comprender mejor las ventajas de Terraform, ayuda comprender primero los beneficios de la infraestructura como código (IaC). IaC permite a los desarrolladores codificar la infraestructura de una forma que permite que el suministro sea automatizado, más rápido y repetible. Es un componente clave de las prácticas Agile y DevOps, como el control de versiones, la integración continua y el despliegue continuo.

La infraestructura como código puede ayudar a lo siguiente:

  • Mejorar la velocidad: la automatización es más rápida que la navegación manual de una interfaz cuando es necesario desplegar y/o conectar recursos.

  • Incrementar la fiabilidad: si la infraestructura es grande, resulta fácil desconfigurar un recurso o suministrar servicios en el orden incorrecto. Con IaC, los recursos siempre se suministran y se configuran exactamente como se ha declarado.

  • Evitar la deriva de configuración: la deriva de configuración se produce cuando la configuración que ha suministrado el entorno ya no coincide con el entorno real. (Véase "Infraestructura inmutable" a continuación).

  • Dar soporte a la experimentación, las pruebas y la optimización: como la infraestructura como código hace que el suministro de una nueva infraestructura sea mucho más rápido y fácil, puede realizar cambios experimentales y probarlos sin invertir mucho tiempo ni recursos, y si le gustan los resultados, puede escalar rápidamente la nueva infraestructura a producción.

Consulte "¿Qué es la infraestructura como código?" para conocer más detalles:

¿Por qué elegir Terraform?

Hay algunas razones clave por las cuales los desarrolladores eligen utilizar Terraform en lugar de otras herramientas de infraestructura como código:

  • Código abierto: Terraform está respaldada por grandes comunidades de colaboradores que crean plugins para la plataforma. Independientemente del proveedor de cloud que utilice, es fácil encontrar plugins, extensiones y soporte profesional. Esto también significa que Terraform evoluciona rápidamente, y se añaden nuevas ventajas y mejoras constantemente.

  • No depende de ninguna plataforma: esto significa que puede utilizarla con cualquier proveedor de servicios de cloud. La mayoría de las demás herramientas de IaC están diseñadas para funcionar con un único proveedor de cloud.

  • Infraestructura inmutable: la mayoría de las herramientas de infraestructura como código crean una infraestructura mutable, lo que significa que la infraestructura puede cambiar para dar cabida a los cambios, como una actualización de middleware o un nuevo servidor de almacenamiento. El riesgo de la infraestructura mutable reside en la deriva de configuración: a medida que se acumulan los cambios, el suministro real de diferentes servidores u otros elementos de infraestructura se va "desviando" poco a poco de la configuración original, lo que dificulta el diagnóstico y la corrección de los errores o los problemas de rendimiento. Terraform suministra una infraestructura inmutable, lo que significa que con cada cambio en el entorno, la configuración actual se sustituye por una nueva en la que se aplica el cambio, y se vuelve a suministrar la infraestructura. Incluso mejor, se pueden conservar las configuraciones anteriores como versiones para habilitar las reversiones si es necesario o si así se desea.
Módulos de Terraform

Los módulos de Terraform son pequeñas configuraciones de Terraform reutilizables para varios recursos de infraestructura que se utilizan conjuntamente. Los módulos de Terraform son útiles porque permiten automatizar recursos complejos con construcciones configurables reutilizables. Al escribir incluso un archivo Terraform muy simple, se genera un módulo. Un módulo puede llamar a otros módulos, denominados módulos hijo, de modo que el ensamblaje de la configuración resulta más rápido y conciso. También se puede llamar a los módulos varias veces, ya sea dentro de la misma configuración o en configuraciones distintas.

Proveedores de Terraform

Los proveedores de Terraform son plugins que implementan tipos de recursos. Los proveedores contienen todo el código necesario para autenticar un servicio y conectarse a él, normalmente desde un proveedor de cloud público, en nombre del usuario. Puede buscar proveedores para las plataformas y servicios de cloud que utilice, añadirlos a la configuración y, a continuación, utilizar sus recursos para suministrar la infraestructura. Hay proveedores disponibles para casi todos los principales proveedores de cloud o las ofertas de SaaS, por ejemplo, desarrollados o soportados por la comunidad de Terraform u organizaciones individuales. Consulte la documentación de Terraform (enlace externo a ibm.com) para obtener una lista detallada.

Terraform frente a Kubernetes

A veces, existe cierta confusión entre Terraform y Kubernetes y en relación a lo que hace cada una de estas herramientas. La verdad es que no son alternativas y, en realidad, juntas funcionan de manera eficaz.

Kubernetes es un sistema de orquestación de contenedores de código abierto que permite a los desarrolladores planificar despliegues en nodos en un clúster de cálculo, y gestiona activamente las cargas de trabajo en contenedores para asegurarse de que su estado coincide con las intenciones de los usuarios.

Terraform, por otro lado, es una herramienta de infraestructura como código con un alcance mucho más amplio, que permite a los desarrolladores automatizar una infraestructura completa que abarca múltiples clouds públicos y privados.

Terraform puede automatizar y gestionar prestaciones a nivel de infraestructura como servicio (IaaS), plataforma como servicio (PaaS) e incluso software como servicio (SaaS), y crear todos estos recursos en todos los proveedores simultáneamente. Puede utilizar Terraform para automatizar el suministro de Kubernetes (especialmente clústeres de Kubernetes gestionados en plataformas cloud) y el despliegue de aplicaciones en un clúster.

Terraform frente a Ansible

Tanto Terraform como Ansible son herramientas de infraestructura como código, pero hay un par de diferencias significativas entre las dos:

  • Mientras que Terraform es puramente una herramienta declarativa (véase más arriba), Ansible combina la configuración declarativa y procedimental. En la configuración procedimental, el usuario especifica los pasos o la forma precisa en la que quiere suministrar la infraestructura hasta el estado deseado. La configuración procedimental supone más trabajo,  pero proporciona más control.

  • Terraform es de código abierto, y Ansible es una herramienta desarrollada y comercializada por Red Hat.
Soluciones relacionadas
IBM® Cloud Schematics

IBM® Cloud Schematics proporciona automatización mediante la oferta de plantillas declarativas de Terraform para garantizar que se suministre la infraestructura en cloud deseada.

Explore IBM® Cloud Schematics
Recursos ¿Qué es la infraestructura como código (IaC)?

La infraestructura como código (IaC) automatiza el suministro de infraestructura y permite a su organización desarrollar, desplegar y escalar aplicaciones en cloud con mayor velocidad y menor riesgo y costes.

¿Qué es Kubernetes?

Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza el despliegue, la gestión y el escalado de aplicaciones. Descubra cómo Kubernetes habilita un desarrollo nativo en cloud rentable.

¿Qué es la infraestructura como servicio (IaaS)?

Una introducción a IaaS, sus componentes, ventajas y precios, y qué relación tiene con PaaS, SaaS, BMaaS, los contenedores y la configuración sin servidor.

Dé el siguiente paso

IBM® Cloud Schematics es la herramienta de automatización de cloud gratuita de IBM que se basa en Terraform. IBM® Cloud Schematics le permite gestionar completamente la automatización de la infraestructura basada en Terraform para que pueda dedicar más tiempo a la creación de aplicaciones y menos a la creación de entornos.

Más información sobre IBM® Cloud Schematics