¿Qué es Terraform?
Esta guía destaca todo lo que se necesita saber sobre Terraform, una herramienta que permite a los programadores crear, cambiar y asignar versión a la infraestructura de forma segura y eficiente.
Suscríbase al boletín de IBM
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 programación declarativa que permite a los desarrolladores utilizar un lenguaje de configuración general llamado HCL (HashiCorp Configuration Language) para describir la nube del estado final deseado o la infraestructura on premises para ejecutar una aplicación. Posteriormente genera un plan para llegar a ese estado final y ejecuta el plan para proporcionar la infraestructura.

Terraform es una de las herramientas de automatización de infraestructuras más populares, ya que utiliza una sintaxis sencilla, puede proporcionar infraestructuras en varios centros de datos on premises y en la nube, y puede volver a proporcionar infraestructuras de forma segura y eficaz en respuesta a los cambios de configuración. Si su organización planea desplegar un entorno de nube híbrida o multinube, es probable que desee o necesite conocer Terraform.

¿Por qué 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). IaC permite a los desarrolladores codificar la infraestructura de forma que el aprovisionamiento sea automatizado, más rápido y repetible. Es un componente clave de las prácticas ágiles y DevOps, como el control de versiones, la integración continua y el despliegue continuo.

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 necesita desplegar 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 proporcionó su entorno ya no coincide con el entorno real. (Consulte "Infraestructura inmutable" a continuación.)

  • Apoyo a la experimentación, las pruebas y la optimización: debido a que la infraestructura como código hace que el aprovisionamiento 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 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 agregadas constantemente.

  • Plataforma agnóstica: lo que significa que puede usarlo 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 nube.

  • 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 adaptarse a 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 : a medida que los cambios se acumulan, el aprovisionamiento real de diferentes servidores u otros elementos de la infraestructura se "desvía" más de la configuración original, lo que hace que los errores o problemas de rendimiento sean difíciles de diagnosticar y corregir. Terraform proporciona 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 la infraestructura se reaprovisiona. Aún mejor, las configuraciones anteriores se pueden conservar como otras versiones para habilitar las reversiones si es necesario o usted 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 SaaS y más, desarrollados o respaldados por la comunidad Terraform u organizaciones individuales. Consulte la documentación de Terraform (el enlace se encuentra fuera de ibm.com) para obtener una lista detallada.

Terraform vs. Kubernetes

A veces, hay confusión entre Terraform y Kubernetes y lo que realmente hacen. En realidad no se alternan, sino que funcionan de manera efectiva en conjunto.

Kubernetes es un sistema de orquestación de contenedores de código abierto que permite a los desarrolladores programar despliegues en nodos en un clúster de cómputo y administrar activamente cargas de trabajo en contenedores 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 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 paralelo. Puede usar Terraform para automatizar el suministro de clústeres Kubernetes administrados especialmente en las plataformas en la nube y para automatizar el despliegue de aplicaciones en un clúster.

Terraform y 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 puramente una herramienta declarativa (ver arriba), Ansible combina configuración declarativa y procedimental . En la configuración de procedimiento, usted especifica los pasos o la manera precisa en la que desea suministrar 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 garantizar una 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 la infraestructura, lo que permite a su organización desarrollar, desplegar 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 administración y el escalamiento 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 PaaS, SaaS, BMaaS, contenedores y modo sin servidor.

Dé el siguiente paso

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

Más información sobre IBM Cloud Schematics