Terraform es una herramienta de infraestructura como código (IaC) de código abierto creada por HashiCorp. Terraform permite a los desarrolladores aprovisionar, actualizar y destruir componentes de infraestructura locales y en la nube, como máquinas virtuales y clústeres de Kubernetes, mediante la escritura de archivos de configuración legibles por humanos.
HashiCorp Terraform utiliza un lenguaje declarativo en lugar de un lenguaje procedimental. Los usuarios describen el estado final deseado para los recursos de infraestructura y Terraform se encarga del resto. Terraform crea automáticamente un plan de ejecución, identifica las dependencias entre los recursos y aprovisiona los componentes en el orden correcto. Por ejemplo, si una máquina virtual (VM) depende de una nube privada virtual (VPC), Terraform se asegura de que la VPC se crea antes de aprovisionar la máquina virtual.
En cambio, con un lenguaje procedimental, los desarrolladores deben escribir instrucciones paso a paso para aprovisionar la infraestructura.
Los archivos de configuración de Terraform se pueden versionar, reutilizar y compartir. Terraform gestiona componentes de bajo nivel, como recursos informáticos y de almacenamiento, y componentes de alto nivel, como entradas del sistema de nombres de dominio (DNS) y características de software como servicio (SaaS).
En febrero de 2025, IBM adquirió HashiCorp y sus ofertas, incluida Terraform.
Terraform crea y gestiona los recursos en las plataformas en la nube y otros servicios a través de interfaces de programación de aplicaciones (API). Terraform funciona con prácticamente cualquier plataforma o servicio con una API accesible, incluidos Amazon Web Services (AWS), Microsoft Azure, Google nube, GitHub, IBM Cloud y Docker.
El flujo de trabajo principal de Terraform consta de tres etapas:
Un desarrollador escribe un archivo de configuración legible para definir las configuraciones de recursos para la infraestructura deseada. El archivo es declarativo, lo que significa que el desarrollador describe la infraestructura que desea, pero no cómo aprovisionarla.
Por ejemplo, si un desarrollador quiere aprovisionar infraestructura para implementar una aplicación alojada en la nube, podría especificar que necesita máquinas virtuales en una nube privada virtual, con grupos de seguridad asociados y un equilibrador de carga.
Un único archivo de configuración puede gestionar recursos ubicados en varios proveedores de servicios en la nube y servicios.
Terraform analiza tanto la configuración escrita proporcionada por el desarrollador como el estado actual de la infraestructura de la organización. A continuación, crea un plan de ejecución que describe cómo alcanzará el estado final deseado a partir del estado actual.
El plan en sí toma la forma de una lista de infraestructura que Terraform creará, actualizará o destruirá para alinear el mundo real con las configuraciones descritas por el desarrollador.
Pensemos en el ejemplo anterior de un desarrollador que implementa una aplicación en máquinas virtuales de una nube privada virtual. El plan de Terraform podría incluir acciones como:
Los desarrolladores pueden revisar y modificar el plan antes de que Terraform lo ejecute.
Cuando se aprueba el plan, Terraform realiza las operaciones propuestas en el orden correcto y respeta cualquier dependencia de recursos. Es decir, si el recurso A depende del recurso B, Terraform se asegura de que el recurso B se cree antes que el recurso A.
Por ejemplo, si un desarrollador actualiza las propiedades de una VPC y cambia el número de máquinas virtuales en esa VPC, Terraform creará de nuevo la VPC con las propiedades actualizadas antes de escalar las máquinas virtuales.
Los componentes principales de Terraform incluyen:
Los archivos de configuración son la forma en que los desarrolladores definen los recursos deseados para entornos locales y en la nube. Estos archivos le indican a Terraform qué proveedores usar, qué infraestructura crear y qué datos obtener. Los desarrolladores pueden modificar, reutilizar y compartir archivos de configuración.
Los desarrolladores pueden escribir archivos de configuración en JSON o en HashiCorp Configuration Language (HCL). HCL utiliza una sintaxis declarativa: los desarrolladores describen la infraestructura deseada en lugar de especificar cómo aprovisionarla. HCL se parece a los pares clave-valor de JSON, pero está optimizado para la legibilidad humana.
Los módulos son contenedores reutilizables para varios recursos que suelen utilizarse juntos. Por ejemplo, un módulo puede contener máquinas virtuales, bases de datos, configuraciones de red y configuraciones de seguridad, todo en un solo paquete. Los módulos se almacenan como colecciones de archivos de configuración.
Los módulos de Terraform permiten a los desarrolladores crear infraestructuras complejas sin tener que empezar de cero cada vez. En su lugar, pueden utilizar módulos que ya describan las disposiciones de infraestructura que necesitan.
Un archivo de estado de Terraform es una representación del estado actual de la infraestructura, incluidos los componentes, las configuraciones y las relaciones entre los recursos.
Cuando Terraform crea un plan, comienza por comparar el archivo de configuración con el archivo de estado. Esto permite a Terraform determinar los cambios que debe realizar para adecuar la infraestructura actual a la configuración deseada.
Los proveedores de Terraform son complementos que permiten a Terraform interactuar con API para servicios y plataformas externos. Los proveedores permiten a Terraform gestionar recursos en entornos de infraestructura como servicio (IaaS), plataforma como servicio (PaaS) y software como servicio (SaaS). Cada proveedor contiene todo el código que Terraform necesita para conectarse a un servicio, autenticar y aprovisionar recursos.
Aunque los desarrolladores pueden escribir sus propios proveedores, también pueden utilizar proveedores preexistentes escritos por HashiCorp y otros usuarios de Terraform. Hay proveedores prediseñados para la mayoría de los principales servicios de nube privada y pública, así como para bases de datos, soluciones de red y otras herramientas habituales.
Terraform Registry es un repositorio de proveedores, módulos, reglas de políticas y soluciones.
Cualquiera puede publicar y consumir los recursos del registro público de Terraform. Las organizaciones también pueden crear registros privados para compartir sus propios módulos y recursos internamente.
La CLI de Terraform es la herramienta de interfaz de línea de comandos (CLI) para gestionar la infraestructura con Terraform. Los desarrolladores lo utilizan para ejecutar comandos, generar planes de ejecución, aplicar cambios e interactuar con componentes clave de Terraform, como archivos de configuración, archivos de estado, proveedores y módulos.
Las organizaciones utilizan Terraform para aprovisionar y gestionar la infraestructura a lo largo de su ciclo de vida. Los casos de uso más comunes incluyen:
Los entornos multinube pueden ser complejos porque cada proveedor de servicios en la nube tiene sus propias interfaces, herramientas y flujos de trabajo. Además, los recursos clave se pueden distribuir en varios centros de datos.
Las organizaciones pueden utilizar Terraform para simplificar la gestión y la orquestación de infraestructuras multinube a gran escala. En concreto, Terraform permite a las organizaciones utilizar el mismo lenguaje de configuración para aprovisionar y gestionar recursos entre varios proveedores de servicios en un único flujo de trabajo.
Terraform puede implementar y gestionar la infraestructura para aplicaciones de varios niveles, lo que permite a las organizaciones gestionar los recursos de cada nivel en un flujo de trabajo unificado y, al mismo tiempo, respetar las dependencias.
Por ejemplo, una aplicación multinivel puede constar de un grupo de servidores web, un nivel de base de datos, una capa de API, servidores de almacenamiento en caché y un nivel de enrutamiento. Terraform aprovisionaría el nivel de la base de datos antes de aprovisionar los servidores web que dependen de ella.
En las grandes organizaciones, los equipos de operaciones de TI centralizados suelen recibir muchas solicitudes de infraestructura repetitivas.
Las organizaciones pueden usar Terraform para crear un modelo de infraestructura de autoservicio que permita a los equipos de productos gestionar su propia infraestructura de forma independiente. Por ejemplo, al utilizar módulos prediseñados, los equipos pueden implementar directamente componentes estandarizados y aprobados.
Las organizaciones también pueden integrar Terraform con sistemas de tickets y canalizaciones DevOps de integración continua/entrega continua (CI/CD) para ayudar a automatizar las nuevas solicitudes de aprovisionamiento de infraestructura. Por ejemplo, cuando un usuario envía una solicitud de infraestructura al sistema de venta de entradas, Terraform puede iniciar un flujo de trabajo para actualizar automáticamente los recursos en consecuencia.
Terraform puede ayudar a las organizaciones a aplicar políticas de seguridad y cumplimiento en los tipos de recursos que los equipos pueden aprovisionar y utilizar.
Por ejemplo, las organizaciones pueden utilizar los módulos de Terraform para codificar estándares para implementar y gestionar recursos en toda la organización. Cuando otros equipos utilizan estos módulos aprobados, pueden estar seguros de que están implementando los recursos de acuerdo con las prácticas de la organización.
Las organizaciones pueden almacenar los archivos de configuración de Terraform en un sistema de control de versiones (VCS), lo que permite a los equipos de DevOps colaborar en el código, revisar las definiciones, realizar un seguimiento de los cambios en la infraestructura y volver a versiones anteriores de esta si es necesario.
Kubernetes y Terraform son componentes comunes de los entornos en la nube y ambos ayudan a automatizar las tareas relacionadas con la infraestructura. Sin embargo, la principal diferencia entre los dos es que Kubernetes se centra en cargas de trabajo en contenedores, mientras que Terraform gestiona todo tipo de componentes de infraestructura, incluidos los propios clústeres de Kubernetes.
Kubernetes es una plataforma de orquestación de contenedores de código abierto para programar y automatizar la implementación, la gestión y el escalado de las aplicaciones en contenedores. Terraform es una herramienta de infraestructura como código que automatiza el aprovisionamiento y la gestión de la infraestructura.
Aunque se trata de herramientas distintas con funciones diferentes, a menudo funcionan juntas en entornos de nube. Por ejemplo, Terraform puede automatizar el aprovisionamiento de clústeres de Kubernetes en plataformas en la nube, mientras que Kubernetes gestiona la implementación de aplicaciones dentro de estos clústeres.
Tanto Terraform como Ansible son herramientas de infraestructura como código que ayudan a automatizar las tareas básicas de infraestructura. Sin embargo, utilizan lenguajes diferentes y, a menudo, sirven para propósitos diferentes. Terraform se utiliza para aprovisionar recursos de infraestructura, mientras que Ansible se utiliza a menudo para gestionar configuraciones de recursos.
Terraform utiliza un lenguaje puramente declarativo, mientras que Ansible combina lenguajes declarativos y procedimentales. En la configuración procedimental, un desarrollador especifica los pasos para configurar los recursos en el estado deseado. La configuración de procedimientos requiere más mano de obra, pero también puede proporcionar más control.
Las guías de estrategias de Ansible, escritos en YAML, permiten un control detallado de tareas como la instalación de software y la actualización de la configuración del sistema. Ansible también tiene una variedad de módulos predefinidos para tareas comunes de gestión de la configuración, incluidas la gestión de paquetes y las actualizaciones del sistema operativo. Además, Ansible puede aplicar cambios a los recursos de forma idempotente, lo que significa que, después de aplicar una operación la primera vez, las aplicaciones posteriores de la misma operación no cambian el recurso.
En conjunto, estas características ayudan a explicar por qué Ansible es una opción común para la gestión de la configuración.
Aunque Terraform puede aprovisionar recursos de infraestructura, no puede gestionar el software dentro de los recursos con tanta eficacia como Ansible. Por ejemplo, Terraform puede definir una nueva máquina virtual, incluidas propiedades como el tipo de instancia y el tamaño del disco, pero no puede actualizar el sistema operativo de la máquina virtual.
Sin embargo, Terraform puede trabajar mano a mano con herramientas de gestión de configuración como Ansible para simplificar y agilizar la configuración de la infraestructura. Por ejemplo, una organización puede usar Terraform para aprovisionar máquinas virtuales y Ansible para configurar el software en esas máquinas.
Escale automáticamente su infraestructura de TI actual para obtener un mayor rendimiento a un coste menor.
Descubra cómo la IA para operaciones de TI ofrece los conocimientos que necesita para impulsar un rendimiento empresarial excepcional.
Vaya más allá de la simple automatización de tareas para gestionar procesos de alto perfil, orientados al cliente y generadores de ingresos con adopción y escala integradas.