Terraform

menu icon

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.

¿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 en local o cloud de "estado final" deseada para ejecutar una aplicación. A continuación, elabora un plan para alcanzar ese estado final y lo ejecuta para suministrar la infraestructura.

Como Terraform 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, actualmente es una de las herramientas de automatización de infraestructura más populares disponibles. 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 haga 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 con 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 desviación de configuración: la desviación de configuración se produce cuando la configuración que ha suministrado el 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 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?" conocer más detalles:

¿Por qué elegir Terraform?

Hay algunas razones clave por las cuales los desarrolladores eligen 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 cloud que utilice, es fácil encontrar plugins, extensiones y soporte profesional. Esto también significa que Terraform evoluciona rápidamente y constantemente se añaden nuevas ventajas y mejoras.
  • Plataforma agnóstica: 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 acomodar cambios como una actualización de middleware o un nuevo servidor de almacenamiento. El peligro con la infraestructura mutable es la desviación de configuración, a medida que los cambios se acumulan, el suministro real de diferentes servidores u otros elementos de infraestructura 'se desvía' 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. Incluso mejor, se pueden conservar las configuraciones anteriores como versiones para habilitar las reversiones en caso 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. Escribir incluso un archivo de formato Terraform muy simple genera un módulo. Un módulo puede llamar a otros módulos, denominados módulos hijo, 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 plugins que implementan tipos de recursos. Los proveedores contienen todo el código necesario para autenticar y conectarse a un servicio, normalmente desde un proveedor de cloud público, en nombre del usuario. Puede encontrar 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. Los proveedores están disponibles para casi todos los principales proveedores de cloud, oferta de SaaS, y más, desarrollados y/o soportados por la comunidad de Terraform u organizaciones individuales. Consulte la documentación de Terraform  (enlace externo a IBM) para obtener una lista detallada.

Terraform frente a Kubernetes

A veces, existe confusión entre Terraform y Kubernetes y lo que hace cada una. 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, permitiendo a los desarrolladores automatizar una infraestructura completa que abarca múltiples clouds públicos y privados.

Terraform puede automatizar y gestionar la infraestructura como servicio (IaaS), la plataforma como servicio (PaaS) o incluso funciones a nivel de software como servicio (SaaS) y crear todos estos recursos en todos los proveedores en paralelo. Puede utilizar Terraform para automatizar el suministro de Kubernetes, específicamente clústeres de Kubernetes gestionados en plataformas cloud, y para automatizar el despliegue 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 (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 al 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 vendida por Red Hat.

IBM y Terraform

IBM Cloud Schematics es la herramienta de automatización de cloud gratuita 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 a la creación de entornos.

Obtenga más información sobre cómo utilizar IBM Cloud Schematics.

Para obtener más información sobre Terraform, regístrese para obtener un ID de IBM y crear su cuenta de IBM Cloud.