¿Qué es Terraform?
Esta guía fue creada para ofrecerle todo lo que necesita saber sobre Terraform, una herramienta que permite a los programadores crear, cambiar y desarrollar nuevas versiones de 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 denominado HCL (HashiCorp Configuration Language) para describir la nube de "estado final" deseada o la infraestructura local para ejecutar una aplicación. A continuación, elabora un plan para alcanzar ese estado final y lo ejecuta para suministrar la infraestructura.

Debido a que Terraform utiliza una sintaxis sencilla, la solución puede suministrar la infraestructura en múltiples centros de datos en la nube y a nivel local, y es capaz de ejecutar la infraestructura de forma segura y eficiente en respuesta a los cambios en la configuración. Es una de las herramientas de automatización de infraestructura más populares disponibles actualmente. Si su organización planea implementar un entorno de nube híbrida o multinube, es probable que desee o necesite conocer Terraform.

¿Por qué utilizar la infraestructura como código (IaC)?

Para comprender mejor las ventajas de Terraform, es útil comprender primero los beneficios de la Infraestructura como código (IaC). La IaC permite a los desarrolladores codificar la infraestructura de una forma que hace que el suministro sea automatizado, rápido y replicable. Es un componente clave de las prácticas Agile y DevOps, como el control de versiones, la integración continua y la implementación continua.

La infraestructura como código podría ser útil ante los siguientes escenarios:

  • Mejorar la velocidad: la automatización es más rápida que navegar manualmente por una interfaz cuando necesita implementar y/o conectar recursos.

  • Mejorar la confiabilidad: si la infraestructura es de gran tamaño, es muy fácil configurar incorrectamente 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 el desvío de configuraciones: el desvío de configuraciones se produce cuando la configuración que suministró su entorno ya no coincide con el entorno real. (Consulte "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 nueva infraestructura sea mucho más rápido y sencillo, puede realizar y probar cambios experimentales sin invertir mucho tiempo y recursos, y si le gustan los resultados, puede ampliar rápidamente la nueva infraestructura a producción.

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

¿Por qué Terraform?

Existen algunas razones clave por las que los desarrolladores eligen utilizar Terraform sobre otras herramientas de infraestructura como código:

  • Código abierto: Terraform está respaldado por grandes comunidades de colaboradores que crean complementos (plugins) para la plataforma. Independientemente del proveedor de nube que utilice, es muy sencillo encontrar complementos, extensiones y soporte profesional. Esto significa que Terraform también evoluciona rápidamente, con nuevos beneficios y mejoras añadidas constantemente.

  • Independiente de la plataforma: lo que significa que puede usarlo con cualquier proveedor de servicios en la nube. La mayoría de otras herramientas de IaC están diseñadas para funcionar con un solo proveedor de nube.

  • Infraestructura inmutable: la mayoría de las herramientas de Infraestructura como código crean infraestructura mutable, lo que significa que la infraestructura puede cambiar para adaptarse a cambios como una actualización de middleware o un nuevo servidor de almacenamiento. El peligro con la infraestructura mutable es el desvío de configuraciones: a medida que los cambios se acumulan, el suministro real de diferentes servidores u otros elementos 'se desvían' más allá de la configuración original, haciendo que los errores o problemas de rendimiento sean difíciles de diagnosticar y corregir. Terraform suministra una infraestructura inmutable, lo que significa que con cada cambio en el entorno, la configuración actual se sustituye por una nueva que aplica el cambio, y se vuelve a suministrar la infraestructura. Y lo que es aún mejor, las configuraciones anteriores se pueden conservar como versiones para habilitar las restauraciones a un estado previo, si es necesario o si así se desea.
Módulos de Terraform

Los módulos de Terraform son pequeñas configuraciones reutilizables para múltiples recursos de infraestructura que se utilizan conjuntamente. Los módulos de Terraform son útiles porque permiten automatizar recursos complejos con construcciones configurables reutilizables. La escritura de un archivo en Terraform, por más sencillo que sea, resulta en la creación de un módulo. Un módulo puede llamar a otros módulos, denominados módulos hijos, que permiten que la configuración de ensamblaje sea más rápida y concisa. Los módulos también se pueden llamar varias veces, ya sea dentro de la misma configuración o en configuraciones separadas.

Proveedores de Terraform

Los proveedores de Terraform son plug-ins que implementan diferentes tipos de recursos. Los proveedores contienen todo el código necesario para autenticar y conectarse a un servicio, generalmente desde un proveedor de nube pública, a nombre del usuario. Puede encontrar proveedores para las plataformas y servicios en la nube que utilice, añadirlos a la configuración y, a continuación, utilizar sus recursos para suministrar la infraestructura. Los proveedores están disponibles para casi todos los principales proveedores de nube, soluciones SaaS y otros. Estos complementos han sido desarrollados o soportados por la comunidad Terraform u organizaciones individuales. Vea la Documentación de Terraform  (enlace externo a ibm.com) para obtener una lista detallada.

Terraform frente a Kubernetes

Es común que exista confusión entre Terraform y Kubernetes, y lo que realmente hace cada uno de ellos. La verdad es que no son alternativas y realmente trabajan juntos de manera efectiva.

Kubernetes es un sistema de orquestación de contenedor de código abierto que permite a los desarrolladores programar implementaciones en nodos en un clúster de computación y gestiona activamente cargas de trabajo contenerizadas para garantizar que su estado coincida 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 nubes públicas y privadas.

Terraform puede automatizar y gestionar capacidades de nivel de Infraestructura como servicio (IaaS), Plataforma como servicio (PaaS), o incluso Software como servicio (SaaS) y desarrollar todos estos recursos a través de todos esos proveedores en paralelo. Puede utilizar Terraform para automatizar el suministro de Kubernetes (especialmente clústeres de Kubernetes gestionados en plataformas de la nube) y para automatizar la implementación de aplicaciones en un clúster.

Terraform frente a Ansible

Terraform y 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 (vea 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 al estado deseado. La configuración procedimental significa más trabajo, pero brinda más control.

  • Terraform es de código abierto. Ansible es una herramienta desarrollada y vendida 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 de nube 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, lo que permite a su organización desarrollar, implementar y escalar aplicaciones en la nube con mayor velocidad, menor riesgo y menor costo.

¿Qué es Kubernetes?

Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, la gestión y el escalamiento de aplicaciones. Descubra cómo Kubernetes permite un desarrollo rentable y nativo de la nube.

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

Una introducción a IaaS, sus componentes, ventajas, precios y cómo se relaciona con PaaS, SaaS, BMaaS, contenedores y sin servidor.

Dé el siguiente paso

IBM® Cloud Schematics es la herramienta de automatización de nube sin costo de IBM basada 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 recursos a la creación de entornos.

Conozca más acerca de IBM® Cloud Schematics