¿Qué es Terraform?

Publicado el 15 de abril de 2025
Actualizado el 13 de julio de 2026
Programador procesando datos en un ordenador portátil en una sala de servidores
By Derek Robertson, Matthew Kosinski and Gregg Lindemulder

Terraform definido

Terraform es un producto de infraestructura como código (IaC ) de nivel empresarial creado por HashiCorp. Terraform proporciona una interfaz unificada para Infrastructure Lifecycle Management 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 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 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. Escritura
  2. Plan 
  3. Aplicar

1. Escribir

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

Por ejemplo, digamos que un desarrollador quiere aprovisionar infraestructura para implementar una aplicación alojada en la nube. Podrían especificar que necesitan 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.

2. Planificar

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

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

  • Aprovisionar un equilibrador de carga para distribuir el tráfico entre las máquinas virtuales.

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 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, supongamos que un desarrollador actualiza las propiedades de una VPC y cambia el número 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 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.

Módulos

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.

Módulos de Terraform permiten a los desarrolladores crear infraestructuras complejas sin tener que empezar de cero cada vez. En su lugar, pueden usar módulos que ya describan las disposiciones 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 por comparar 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 utiliza 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. 

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 también puede gestionar la infraestructura existente. Mediante el bloque de importación, los desarrolladores pueden poner bajo su gestión 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 del Registro público de Terraform. Para utilizar un proveedor o módulo de este registro, los usuarios lo añaden 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 sus propios módulos y recursos internamente.

CLI de Terraform

La interfaz de línea de comandos 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.

¿Cómo utilizan Terraform las organizaciones?

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:

  • 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 servicios en la nube tiene sus propias interfaces, herramientas y flujos de trabajo.En este tipo de configuraciones, los recursos críticos de la nube pueden distribuirse entre nubes públicas, privadas y varios centros de datos.

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

Para ayudar a gestionar la infraestructura a escala, Terraform Stacks ayuda a los usuarios a automatizar y optimizar la coordinación, la implementación y la gestión del ciclo de vida de las configuraciones interdependientes de Terraform, lo que reduce el tiempo y los gastos de gestión de la infraestructura. 

Las pilas 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. Al utilizar 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 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 <a href=\"\">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 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 la implementación y las operaciones.

Terraform proporciona la base para este moderno modelo de autoservicio. Se integra con developer portal 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 mantenerse dentro de los flujos de trabajo de Terraform, Waypoint funciona como el portal de autoservicio para desarrolladores de Terraform, permitiendo experiencias de implementación de aplicaciones coherentes 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 el gobierno 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 aplicar un gobierno detallado y lógico en toda la infraestructura, proporciona una biblioteca de políticas preescritas que ofrecen controles listos para usar (por ejemplo, mapeos a NIST SP-80053). Estas políticas ayudan a los equipos a aplicar las restricciones de cumplimiento comunes sin tener que crear todas las políticas desde cero.

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.

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. Este arreglo permite a los equipos DevOps colaborar en el código, revisar definiciones, hacer seguimiento de cambios en la infraestructura y volver a versiones anteriores de infraestructura si es necesario.

HashiCorp Terraform vs. Red Hat Ansible 

Terraform y Ansible se utilizan a menudo de manera conjunta para extender la automatización más allá del aprovisionamiento de infraestructura. Terraform destaca en el aprovisionamiento de infraestructuras, la preparación y el aprovisionamiento de recursos complejos para entornos híbridos y de nube. Ansible es una herramienta potente para gestionar la configuración, modificar y mantener la infraestructura existente de forma coherente. 

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.

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 enviar un evento que active la capacidad de automatización basada en eventos de Ansible Automation Platform (AAP) para poner en marcha flujos de trabajo de automatización dinámicos desde Ansible, todo ello con un solo comando "apply" 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 adaptación, la escalabilidad y el desmantelamiento. Juntos, Terraform y Ansible ayudan a garantizar que la infraestructura y las aplicaciones sigan siendo coherentes y fiables en cada etapa de su ciclo de vida.

IBM DevOps

¿Qué es DevOps?

Andrea Crawford explica qué es DevOps, su valor y cómo las prácticas y herramientas de DevOps ayudan a desarrollar las aplicaciones a lo largo de todo el proceso de entrega de software, desde la ideación hasta la producción. El plan de estudios, dirigido por los principales líderes de opinión de IBM, 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 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 la programación y automatización de la implementación, la gestión y el escalado de aplicaciones contenedorizadas. Terraform es una herramienta de infraestructura como código que automatiza el aprovisionamiento y la gestión de la infraestructura.

Aunque 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 la implementación 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