¿Qué es Terraform?

Publicado el 15 de abril de 2025
Actualizado el 13 de julio de 2026
Un programador que procesa datos en computadora portátil en una sala de servidores
By Derek Robertson, Matthew Kosinski and Gregg Lindemulder

Definición de Terraform

Terraform es un producto de infraestructura como código (IaC) de nivel empresarial creado por HashiCorp. Terraform proporciona una interfaz unificada de infraestructura de gestión del ciclo de vida y un único flujo de trabajo para el aprovisionamiento de componentes de infraestructura para múltiples nubes (AWS, Azure y Google Cloud), redes, centros de datos privados y entornos SaaS. 

Con Terraform, los usuarios pueden crear, actualizar y destruir componentes de infraestructura escribiendo archivos de configuración legibles por humanos. Estos archivos de configuración utilizan 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. 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 garantiza que la VPC se cree antes de aprovisionar la VM.

Por el contrario, con un lenguaje procedimental, los desarrolladores deben escribir instrucciones paso a paso para aprovisionar la infraestructura.

Los archivos de configuración de Terraform pueden versionarse, reutilizarse y compartirse. Terraform gestiona componentes de bajo nivel, como recursos informáticos y de almacenamiento y buckets de S3, 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. 

¿Cómo funciona Terraform?

Terraform funciona con prácticamente cualquier plataforma o servicio con una interfaz de programación de aplicaciones (API) accesible, incluyendo Amazon Web Services (AWS), Microsoft Azure, Google Cloud, GitHub, IBM Cloud y Docker.

El flujo de trabajo principal de Terraform consta de tres etapas:

  1. Escribir
  2. Plan 
  3. Aplicar

1. Escribir

Un desarrollador escribe un archivo de configuración legible por humanos para definir las configuraciones de recursos para su infraestructura deseada. El archivo es declarativo. El desarrollador describe la infraestructura que quiere, pero no cómo aprovisionarla. 

Por ejemplo, supongamos que un desarrollador desea aprovisionar infraestructura para desplegar 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 balanceador de carga.

Un solo archivo de configuración puede gestionar recursos ubicados en múltiples proveedores de la nube y servicios.

2. Planear

Terraform analiza tanto la configuración escrita proporcionada por el desarrollador como el estado actual de la infraestructura de la organización. Luego crea un plan de ejecución que describe cómo alcanzará el estado deseado desde el 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.

Considere el ejemplo anterior de un desarrollador que despliega una aplicación en máquinas virtuales en una nube privada virtual. El plan de Terraform podría incluir acciones como:

  • Aprovisionar nuevas máquinas virtuales para alojar la aplicación. 

  • Modificar un grupo de seguridad existente para permitir el tráfico a las nuevas máquinas virtuales. 

  • Aprovisionamiento de un equilibrador de carga para distribuir el tráfico entre las virtual machines.

Los desarrolladores pueden revisar, modificar y validar el plan antes de que Terraform lo ejecute.

3. Aplicar

Cuando se aprueba el plan, Terraform realiza las operaciones propuestas en el orden correcto, respetando cualquier dependencia de recursos. Es decir, si el recurso A depende del recurso B, Terraform garantiza que el recurso B se cree antes que el recurso A.

Por ejemplo, supongamos que un desarrollador actualiza las propiedades de una VPC y cambia la cantidad de máquinas virtuales en esa VPC. Terraform vuelve a crear la VPC con propiedades actualizadas antes de escalar las máquinas virtuales.

Componentes de Terraform

Los componentes principales de Terraform incluyen:

  • Archivos de configuración
  • Módulos
  • Archivos de estado
  • Proveedores
  • Registros
  • CLI de Terraform
Archivos de configuración

Los archivos de configuración son la forma en que los desarrolladores definen sus recursos deseados para entornos on-premises 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 asemeja a los pares clave-valor de JSON, pero está optimizado para la legibilidad humana.

Módulos

Los módulos son contenedores reutilizables para múltiples recursos que comúnmente se usan juntos. Por ejemplo, un módulo puede contener virtual machines, bases de datos, configuraciones de red y ajustes de seguridad, todo integral. Los módulos se almacenan como colecciones de archivos de configuración.

Los módulos Terraform permiten a los desarrolladores crear infraestructura compleja sin tener que empezar desde cero cada vez. En su lugar, pueden usar módulos que ya describen las disposición de infraestructura que necesitan.

Archivos de estado

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 comparando el archivo de configuración con el archivo de estado. Esta comparación permite a Terraform determinar los cambios que debe realizar para alinear la infraestructura actual con la configuración deseada.

Proveedores

Los proveedores de Terraform son complementos que Terraform usa para interactuar con las API de servicios y plataformas externas. 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. 

Si bien los desarrolladores pueden escribir sus propios proveedores, también pueden usar proveedores preexistentes escritos por HashiCorp y otros usuarios de Terraform. Existen proveedores prediseñados para la mayoría de los principales servicios en la nube pública y privada, así como para bases de datos, soluciones de redes y otras herramientas comunes.  

Terraform también puede gestionar la infraestructura existente. Con el bloque de importación, los desarrolladores pueden gestionar los recursos creados fuera de Terraform, lo que les permite codificar y controlar todo su entorno, no solo los nuevos recursos. 

Registros

El Terraform Registry es un repositorio para proveedores, módulos, reglas de políticas y soluciones.

Cualquiera puede publicar y utilizar los recursos y las plantillas en el Terraform Registry público. Para usar un proveedor o módulo de este registro, los usuarios lo agregan a sus configuraciones. Cuando ejecutan terraform init, Terraform descarga automáticamente todo lo que necesita.

Las organizaciones también pueden crear registros privados para compartir internamente sus propios módulos y recursos.

CLI de Terraform

La CLI de Terraform es la herramienta de interfaz de línea de comandos (CLI) para gestionar la infraestructura con Terraform. Los desarrolladores la 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.

¿Cómo utilizan Terraform las organizaciones?

Las organizaciones usan Terraform para aprovisionar y gestionar infraestructura a lo largo de su ciclo de vida. Los casos de uso comunes incluyen:

  • Gestión de entornos híbridos y multinube
  • Gestión de la infraestructura de aplicaciones
  • Autoservicio para desarrolladores 
  • Gestión de políticas y cumplimiento
  • Colaboración en equipo

Gestión de entornos híbridos y multinube

Los entornos híbridos y multinube pueden ser complejos porque cada proveedor de la nube tiene sus propias interfaces, herramientas y flujos de trabajo.En este tipo de configuraciones, los recursos críticos de la nube podrían distribuirse entre nubes públicas, nubes privadas y múltiples centros de datos.

Las organizaciones pueden usar Terraform para simplificar la gestión y orquestación de infraestructuras en la nube complejas y a gran escala. En concreto, Terraform permite a las organizaciones usar el mismo lenguaje de configuración para aprovisionar y gestionar recursos en nubes públicas, nubes privadas y on premises, todo en un flujo de trabajo unificado.

Para gestionar la infraestructura a escala, Terraform Stacks ayudan a los usuarios a automatizar y optimizar la coordinación, el despliegue y la gestión del ciclo de vida de configuraciones interdependientes de Terraform, reduciendo el tiempo y la carga general de gestionar la infraestructura. 

Stacks reemplazan la estructura tradicional del módulo raíz de Terraform con una nueva arquitectura basada en componentes construida sobre los módulos de Terraform. Mediante el uso de Stacks, los usuarios pueden aprovisionar y coordinar el ciclo de vida de la infraestructura a escala, ofreciendo un enfoque organizado y reutilizable que amplía la infraestructura como código.

Gestión de la infraestructura de aplicaciones

Terraform puede desplegar y gestionar infraestructuras para aplicaciones multinivel, lo que permite a las organizaciones gestionar recursos para cada nivel en un flujo de trabajo unificado respetando 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.

Autoservicio para desarrolladores

El autoservicio para desarrolladores está evolucionando más allá de la simple provisión de infraestructura para abarcar todo el ciclo de vida de la aplicación, desde la configuración del entorno hasta el despliegue y las operaciones continuas.

Terraform proporciona la base para este moderno modelo de autoservicio. Se integra con portales de desarrolladores como Backstage, Port y Cortex; sistemas ITSM como ServiceNow y Jira; y plataformas de pipeline CI/CD como GitHub Actions y Jenkins.

Para los equipos que prefieren permanecer dentro de los flujos de trabajo de Terraform, Waypoint sirve como el portal de autoservicio para desarrolladores nativo de Terraform, lo que permite experiencias de despliegue de aplicaciones congruentes y basadas en políticas. 

En AWS, Azure y GCP, Terraform actúa como la capa de integración y control que unifica estos puntos de entrada, lo que permite a los desarrolladores moverse más rápido mientras mantienen la gobernanza y la coherencia operativa.

Gestión de políticas y cumplimiento

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.

Sentinel, el marco de políticas como código de HashiCorp para imponer una gobernanza detallada y basada en lógica en toda la infraestructura, proporciona una biblioteca de políticas prescritas que ofrecen controles listos para usar (por ejemplo, mapeos a NIST SP-80053). Estas políticas ayudan a los equipos a aplicar restricciones de cumplimiento comunes sin tener que crear todas las políticas desde cero.

Por ejemplo, las organizaciones pueden usar módulos de Terraform para programar estándares para desplegar y administrar recursos en toda la organización. Cuando otros equipos utilizan estos módulos aprobados, pueden estar seguros de que están desplegando recursos en cumplimiento de las prácticas de la organización.

Colaboración en equipo

Las organizaciones pueden almacenar el código de Terraform y los archivos de configuración en un sistema de control de versiones (VCS), como un repositorio Git. Esta disposición permite que los equipos de DevOps colaboren en código, revisen definiciones, realicen un seguimiento de los cambios en la infraestructura y retrocedan a versiones anteriores de infraestructura si es necesario.

HashiCorp Terraform frente a Red Hat Ansible 

Terraform y Ansible se usan a menudo conjuntamente para extender la automatización más allá del aprovisionamiento de infraestructura. Terraform se destaca en el aprovisionamiento de infraestructura, preparación y aprovisionamiento de recursos complejos para entornos híbridos y de nube. Ansible es una poderosa herramienta para la gestión de la configuración, modificando y manteniendo la infraestructura existente de manera congruente. 

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

Las dos herramientas abordan etapas diferentes pero conectadas del ciclo de vida de la infraestructura, lo que las convierte en una opción natural para las organizaciones que buscan coherencia en todos los entornos.

Las integraciones entre Terraform y Ansible ayudan a cerrar la brecha entre la creación de recursos y la gestión de la configuración. Por ejemplo, las acciones de Terraform pueden despachar un evento que activa la capacidad de automatización orientada a eventos de la Plataforma de Automatización de Ansible (AAP) para desencadenar flujos de trabajo dinámicos de automatización desde Ansible, todo con una sola aplicación de Terraform. 

Esta interconectividad puede ayudar a unificar las herramientas de infraestructura y reducir la fricción entre las operaciones del Día 2, como la implementación de parches, la escalabilidad y el desmantelamiento. En conjunto, Terraform y Ansible ayudan a garantizar que la infraestructura y las aplicaciones sigan siendo coherentes y confiables en cada etapa de su ciclo de vida.

IBM DevOps

¿Qué es DevOps?

Andrea Crawford explica qué es DevOps, el valor de DevOps y cómo las prácticas y herramientas de DevOps le ayudan a mover sus aplicaciones a través de todo el delivery pipeline, desde la ideación hasta la producción. Dirigido por los principales líderes de pensamiento de IBM, el programa de estudio está diseñado para ayudar a los líderes empresariales a adquirir los conocimientos necesarios para priorizar las inversiones en IA que pueden impulsar el crecimiento.

Terraform vs. Kubernetes

Kubernetes y Terraform son componentes comunes de los entornos de 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 contenedorizadas, 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 la programación y automatización del despliegue, gestión y escalado de aplicaciones contenedorizadas. Terraform es una herramienta de infraestructura como código que automatiza el aprovisionamiento y la gestión de la infraestructura.

Si bien estas herramientas son distintas y tienen funciones diferentes, a menudo trabajan juntas en backends en la nube. Por ejemplo, Terraform puede automatizar el aprovisionamiento de clústeres de Kubernetes en plataformas en la nube, mientras que Kubernetes gestiona el despliegue de aplicaciones dentro de estos clústeres.

Autores

Derek Robertson

Staff Writer

IBM Think

Matthew Kosinski

Staff Editor

IBM Think

Gregg Lindemulder

Staff Writer

IBM Think