¿Qué es Terraform?
Explore la solución de Terraform de IBM Suscríbase para recibir actualizaciones sobre la nube
Ilustración con collage de pictogramas de monitor de ordenador, 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 versionar infraestructuras de forma segura y eficaz.

Terraform es una herramienta de codificación declarativa que permite a los desarrolladores utilizar un lenguaje de configuración de alto nivel denominado HashiCorp Configuration Language (HCL). Este lenguaje describe el "estado final" deseado de la nube o de la infraestructura local para ejecutar una aplicación. Luego, genera un plan para alcanzar ese estado final y aplica el plan para aprovisionar la infraestructura.

Terraform utiliza una sintaxis sencilla, aprovisiona la infraestructura a través de múltiples centros de datos en la nube y locales, y vuelve a aprovisionar a la infraestructura de forma segura y eficiente en respuesta a cambios en la configuración. Por este motivo, actualmente es una de las herramientas de automatización de infraestructuras más populares. Si su organización planea implementar un entorno de nube híbrida o multinube, probablemente 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 la implementación de las aplicaciones en las instalaciones.

Contenido relacionado

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

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

Para comprender mejor las ventajas de Terraform, primero es útil comprender los beneficios de la infraestructura como código (IaC). IaC permite a los desarrolladores codificar la infraestructura para que el aprovisionamiento se realice de forma automatizada, más rápida 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 manualmente por una interfaz cuando se necesitan implementar o conectar recursos.

  • Mejore la confiabilidad: si su infraestructura es grande, es fácil configurar mal un recurso o prestar servicios en el orden incorrecto. Con IaC, los recursos siempre se aprovisionan y configuran exactamente como se declaran.

  • Impedir la desviación de configuración: la desviación de la configuración se produce cuando la configuración con la que se aprovisionó el entorno deja de coincidir con el entorno real. (Véase "Infraestructura inmutable")

  • Apoyo a la experimentación, las pruebas y la optimización: debido a que la infraestructura como código agiliza y facilita el aprovisionamiento de nueva infraestructura, puede realizar y probar cambios experimentales sin invertir mucho tiempo ni recursos; y si le convencen los resultados, puede escalar rápidamente la nueva infraestructura a producción.
¿Por qué Terraform?

Hay algunas razones clave por las que los desarrolladores optan por utilizar Terraform sobre 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 servicios en la nube que utilice, es fácil encontrar complementos, extensiones y asistencia profesional. Esto también significa que Terraform evoluciona rápidamente, con nuevos beneficios y mejoras agregadas constantemente.

  • Plataforma agnóstica: esto significa que puede utilizarla 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, entendiendo por tal la infraestructura que puede cambiar para acomodar cambios como una actualización de middleware o un nuevo servidor de almacenamiento. El riesgo de una infraestructura mutable es la deriva 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 las correcciones 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 sustituye por una nueva que da cuenta del cambio y se vuelve a aprovisionar la infraestructura. Aún mejor, las configuraciones anteriores se pueden conservar como versiones para habilitar las reversiones si es necesario o se 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. Escribir incluso un archivo Terraform muy simple da como resultado un módulo. Un módulo puede llamar a otros módulos, llamados módulos secundarios,lo que puede hacer que el ensamblaje de la configuración sea más rápido y conciso. Los módulos también pueden llamarse varias veces, ya sea dentro de la misma configuración o en configuraciones independientes.

Proveedores de Terraform

Los proveedores de Terraform son complementos que implementan 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. Se pueden encontrar proveedores para las plataformas y los servicios en la nube que se utilicen, añadirlos a la configuración y, a continuación, utilizar sus recursos para aprovisionar la infraestructura. Hay proveedores disponibles para casi todos los principales proveedores de servicios en la nube, ofertas 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

En ocasiones, existe confusión entre Terraform y Kubernetes y sobre lo que ambos hacen. La verdad es que no son productos alternativos y funcionan conjuntamente de forma eficaz.

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 computación y gestionar activamente las cargas de trabajo contenedorizadas 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 nubes privadas.

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

Terraform vs. Ansible

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

  • Mientras que Terraform es una herramienta puramente declarativa (véase más arriba), Ansible combina tanto la configuración declarativa como la procedimental. En la configuración del procedimiento, especifique los pasos, o la manera precisa, en la que desea aprovisionar la infraestructura al estado deseado. La configuración procedimental requiere más trabajo, pero ofrece más control.

  • Terraform es de código abierto; Ansible ha sido desarrollado y es comercializado por Red Hat.
Soluciones relacionadas
IBM Cloud Schematics

IBM Cloud Schematics proporciona automatización ofreciendo plantillas Terraform declarativas para 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, menor riesgo y menor coste.

¿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 escalado de aplicaciones Descubra cómo Kubernetes permite un desarrollo nativo de la nube rentable.

¿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 serverless.

Dé el siguiente paso

¿Todo listo para DevOps? Para ofrecer software y servicios a la velocidad que exige el mercado, los equipos tienen que iterar y experimentar con rapidez, implementar nuevas versiones con frecuencia y guiarse por los comentarios y los datos. Los equipos de desarrollo en la nube con más éxito adoptan la cultura y las prácticas DevOps modernas, adoptan arquitecturas nativas de la nube y reúnen cadenas de herramientas de las mejores para dar rienda suelta a su productividad.

Explore las soluciones DevOps Pruébelo gratis