¿Qué es Terraform?
Explore la solución Terraform de IBM Suscríbase para recibir actualizaciones de la nube
Ilustración con collage de pictogramas de monitor de computadora, servidor, nubes, puntos
¿Qué es Terraform?

Terraform, una herramienta de "infraestructura como código" de código abierto creada por HashiCorp, permite a los programadores crear, modificar y hacer versiones de la infraestructura de forma segura y eficaz.

Terraform es una herramienta de programación declarativa que permite a los desarrolladores utilizar un lenguaje de configuración de alto nivel denominado HashiCorp Configuration Language (HCL) para describir el "estado final" deseado de la infraestructura local o en la nube para ejecutar una aplicación. Posteriormente genera un plan para llegar a ese estado final y lo ejecuta para aprovisionar la infraestructura.

Terraform emplea una sintaxis sencilla, aprovisiona la infraestructura a través de múltiples centros de datos  en la nube y en entornos locales. Además, vuelve a aprovisionar la infraestructura de forma segura y eficiente en respuesta a los cambios de configuración. Es por eso que actualmente es una de las herramientas de automatización de infraestructuras más populares que existen. Si su organización planea implementar una nube híbrida o un entorno multinube, seguramente querrá o necesitará conocer Terraform.

Logre flexibilidad en el lugar de trabajo con DaaS

Lea cómo el escritorio como servicio (DaaS) permite a las empresas lograr el mismo nivel de rendimiento y seguridad que el despliegue de las aplicaciones on premises.

Contenido relacionado

Regístrese para obtener la guía sobre modernización de aplicaciones

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

Para entender mejor los beneficios de Terraform, es útil comprender primero los beneficios de la infraestructura como código (IaC). La IaC permite a los desarrolladores codificar la infraestructura para que el aprovisionamiento sea automatizado, más rápido y repetible. Es un componente clave de las prácticas ágiles y de DevOps, como el control de versiones, la integración continua y la implementación continua.

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

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

  • Aumentar la confiabilidad: si su infraestructura es grande, es fácil desconfigurar un recurso o aprovisionar servicios en el orden equivocado. Con IaC, los recursos siempre se aprovisionan y configuran exactamente como se declara.

  • Evitar la desviación de la configuración: la desviación de la configuración ocurre cuando la configuración que aprovisionó a su entorno ya no coincide con el entorno real. (Consulte "Infraestructura inmutable")

  • Apoyo a la experimentación, las pruebas y la optimización: debido a que la infraestructura como código hace que el aprovisionamiento de la nueva infraestructura sea 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 para la producción.
¿Por qué Terraform?

Hay algunas razones clave por las que 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 programas adicionales para la plataforma. Independientemente del proveedor de la nube que utilice, es fácil encontrar complementos, extensiones y soporte profesional. Esto también significa que Terraform evoluciona rápidamente, con nuevos beneficios y mejoras que se añaden constantemente.

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

  • Infraestructura inmutable: la mayoría de las herramientas de infraestructura como código crean una infraestructura mutable . Eso significa que la infraestructura puede cambiar para adaptarse a los cambios, como una actualización de software intermedio o un nuevo servidor de almacenamiento. El peligro de la infraestructura mutable es la desviación de la configuración. Esto significa que, a medida que se acumulan los cambios, el aprovisionamiento real de los distintos servidores u otros elementos de la infraestructura se "desvía" cada vez más de la configuración original, lo que dificulta la detección y corrección de errores o problemas de rendimiento. Terraform aprovisiona infraestructura inmutable, lo que significa que con cada cambio en el entorno, la configuración actual se reemplaza por una nueva que tiene en cuenta el cambio y se vuelve a proporcionar la infraestructura. Aún mejor, las configuraciones anteriores se pueden conservar como otras versiones para habilitar las reversiones si es necesario o así lo desea.
Módulos de Terraform

Los módulos de Terraform son configuraciones pequeñas y reutilizables de Terraform para múltiples recursos de infraestructura que se utilizan juntos. Los módulos de Terraform son útiles porque permiten automatizar recursos complejos con construcciones reutilizables y configurables. Incluso escribir un archivo de Terraform muy simple da como resultado un módulo. Un módulo puede llamar a otros módulos, conocidos como módulos hijos, lo que puede hacer que laconfiguració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 complementos que implementan varios tipos de recursos. Los proveedores contienen todo el código necesario para autenticarse y conectarse a un servicio, normalmente de un proveedor de nube pública, en nombre del usuario. Puede encontrar proveedores para los servicios y las plataformas en la nube que utiliza, agregarlos a su configuración y luego utilizar sus recursos para aprovisionar la infraestructura. Los proveedores están disponibles para casi todos los principales proveedores de servicios en la nube, ofertas de SaaS y más, desarrollados o respaldados por la comunidad Terraform u organizaciones individuales. Consulte la documentación de Terraform (enlace externo a ibm.com) para obtener una lista detallada.

Terraform vs. Kubernetes

A veces, existe confusión entre Terraform y Kubernetes y lo que hacen. En realidad no se contraponen, sino que funcionan de manera eficaz en conjunto.

Kubernetes es un sistema de orquestación de contenedores de código abierto que permite a los desarrolladores programar implementaciones en nodos en un clúster de proceso y gestiona activamente la carga de trabajo en contenedores para garantizar que su estado coincida con las intenciones de los usuarios.

Terraform es una herramienta de infraestructura como código de mayor alcance, que permite a los desarrolladores automatizar infraestructuras completas que abarcan múltiples nubes públicas y privadas.

Terraform puede automatizar y gestionar capacidades a nivel de infraestructura como servicio (IaaS), plataforma como servicio (PaaS) o, incluso, software como servicio (SaaS) y crear todos estos recursos en todos los proveedores en paralelo. Puede uras Terraform para automatizar el aprovisionamiento de clústeres de Kubernetes administrados especialmente en las plataformas en la nube y para automatizar la implementación de aplicaciones en un clúster.

Terraform vs. Ansible

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

  • Si bien Terraform es en esencia una herramienta declarativa (ver arriba), Ansible combina la configuración declarativa y la procedimental. En la configuración de procedimiento, usted especifica los pasos o la manera precisa en la que desea aprovisionar la infraestructura al estado deseado. La configuración procedimental implica más trabajo pero proporciona más control.

  • Terraform es de código abierto; Red Hat desarrolla y vende Ansible.
Soluciones relacionadas
IBM Cloud Schematics

IBM Cloud Schematics proporciona automatización al ofrecer plantillas declarativas de Terraform para lograr 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 aprovisionamiento de la infraestructura, lo que permite a su organización desarrollar, implementar y escalar aplicaciones en la nube con mayor velocidad, menos riesgo y menor costo.

¿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 permite un desarrollo rentable 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 la PaaS, el SaaS, el BMaaS, los contenedores y el modo sin servidor.

Dé el siguiente paso

¿Está listo para DevOps? Para ofrecer software y servicios a la velocidad que exige el mercado, los equipos deben iterar y experimentar rápidamente, desplegar nuevas versiones con frecuencia y guiarse por la retroalimentación y los datos. Los equipos de desarrollo en cloud más exitosos adoptan una cultura y prácticas modernas de DevOps, utilizan arquitecturas nativas de cloud y ensamblan cadenas de las mejores para liberar su productividad.

Conozca las soluciones de DevOps Probar sin costo