Terraform

menu icon

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.

¿Qué es Terraform?

Terraform es una herramienta de código abierto "Infraestructura como código", creada por HashiCorp.

Dado a que es una herramienta de codificación declarativa, Terraform permite a los desarrolladores utilizar un lenguaje de configuración de alto nivel llamado HCL (HashiCorp Configuration Language) para describir el "estado ideal" de la infraestructura, ya sea en la nube en las instalaciones, 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 a través de centros de datos en múltiples nubes 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 la organización tiene previsto implementar un entorno de nube híbrida o multinube, es probable que quiera o necesite conocer Terraform.

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

Para comprender mejor las ventajas de Terraform, es necesario abordar 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, tales 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: siempre que sea necesario implementar o conectar recursos, la automatización es una opción más rápida que la navegación manual de una interfaz.
  • Mayor 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 la configuración: el desvío de la configuración se produce cuando la configuración que se ha suministrado 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.

Para más detalles, vea la sección "¿Qué es la infraestructura como código?":

¿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: es decir, puede utilizarlo con cualquier proveedor de servicios de 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 una infraestructura mutable, lo que significa que esta 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 la configuración, 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 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 complementos 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, oferta SaaS y otros. Estos complementos han sido desarrollados o soportados por la comunidad Terraform u organizaciones individuales. Consulte la documentación de Terraform (enlace externo a IBM) 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 contenedores de código abierto que permite a los desarrolladores planificar implementaciones en nodos de un clúster de computación y gestionar activamente cargas de trabajo contenerizadas, y 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 la Infraestructura como servicio (IaaS), la o incluso funcionalidades 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, en particular, clústeres de Kubernetes gestionado 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.

IBM y Terraform

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

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

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