¿Qué es Terraform?

15 abril 2025

Autores

Gregg Lindemulder

Staff Writer

Matthew Kosinski

Enterprise Technology Writer

¿Qué es Terraform?

Terraform es una herramienta de código abierto de "Infraestructura como código" (IaC) creada por HashiCorp. Terraform permite a los desarrolladores aprovisionar, actualizar y destruir componentes de infraestructura on premises y en la nube, como virtual machines y clústeres de Kubernetes, escribiendo archivos de configuración legibles por humanos.

HashiCorp Terraform usa 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 virtual machine (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, 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.

Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA

Descubra insights y noticias de expertos sobre IA, la nube y mucho más en el boletín semanal Think. 

¿Cómo funciona Terraform?

Terraform crea y gestiona recursos en 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:

  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, lo que significa que el desarrollador describe la infraestructura que desea, pero no cómo aprovisionarla.  

Por ejemplo, si un desarrollador desea aprovisionar infraestructura para desplegar una aplicación alojada en la nube, puede especificar que necesita virtual machines en una nube privada virtual, con grupos de seguridad asociados y un equilibrador 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 final 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 virtual machines en una nube privada virtual. El plan de Terraform podría incluir acciones como:

  • Aprovisionamiento de nuevas virtual machines para alojar la aplicación.

  • Modificar un grupo de seguridad existente para permitir el tráfico a las nuevas virtual machines.

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

Los desarrolladores pueden revisar y modificar 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, si un desarrollador actualiza las propiedades de una VPC y cambia el número de virtual machines en esa VPC, Terraform vuelve a crear la VPC con las propiedades actualizadas antes de escalar las virtual machines.

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 lugar de ello, pueden emplear módulos que ya describen 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 comparando el archivo de configuración con el archivo de estado. Esto 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 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.

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 privados y de servicio en la nube públicos, así como para bases de datos, soluciones de redes y otras herramientas comunes.  

Registros

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

Cualquiera puede publicar y consumir los recursos en el Registro Terraform Registry. 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 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 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 multinube
  • Gestión de la infraestructura de aplicaciones
  • Infraestructura de autoservicio
  • Gestión de políticas y cumplimiento
  • Colaboración en equipo

Gestión de entornos multinube

Los entornos multinube pueden ser complejos porque cada proveedor de la nube tiene sus propias interfaces, herramientas y flujos de trabajo. Además, los recursos clave se pueden distribuir entre múltiples centros de datos.

Las organizaciones pueden usar Terraform para simplificar la gestión y orquestación de infraestructuras multinube a gran escala. En concreto, Terraform permite a las organizaciones usar el mismo lenguaje de configuración para aprovisionar y gestionar recursos a través de múltiples proveedores de servicios en un único flujo de trabajo.

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.

Infraestructura de autoservicio

En las grandes organizaciones, los equipos de operaciones de TI centralizados suelen recibir muchas solicitudes de infraestructura repetitivas.

Las organizaciones pueden utilizar 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, mediante el uso de módulos prediseñados, los equipos pueden desplegar directamente componentes estandarizados y aprobados.

Las organizaciones también pueden integrar Terraform con sistemas de sistemas de tickets y pipelines de 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 tickets, Terraform puede iniciar un flujo de trabajo para actualizar automáticamente los recursos en consecuencia. 

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.

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 archivos de configuración de Terraform en un sistema de control de versiones (VCS), lo que permite a los equipos de DevOps que 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.

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 programar y automatizar el despliegue, la gestión y el escalado de aplicaciones en contenedores. Terraform es una herramienta de infraestructura como código que automatiza el aprovisionamiento y la gestión de la infraestructura.

Si bien se trata de herramientas distintas con diferentes funciones, a menudo funcionan de manera conjunta 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 el despliegue de aplicaciones dentro de estos clústeres.

Terraform y Ansible

Terraform y Ansible son herramientas de infraestructura como código que ayudan a automatizar las tareas centrales de la infraestructura. Sin embargo, utilizan diferentes lenguajes y, a menudo, sirven para diferentes propósitos. 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 procedimental requiere más trabajo, pero también puede proporcionar más control.

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. Ansible también tiene una variedad de módulos prediseñados para tareas comunes de gestión de configuración, incluida la gestión de paquetes y las actualizaciones del sistema operativo. Y Ansible puede aplicar cambios a los recursos de forma idempotente, lo que significa que, después de que se aplica una operación por primera vez, otras aplicaciones 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.

Si bien Terraform puede aprovisionar recursos de infraestructura, no puede administrar el software dentro de los recursos con la misma eficacia que Ansible. Por ejemplo, Terraform puede definir una nueva virtual machine, incluidas propiedades como el tipo de instancia y el tamaño del disco, pero no puede actualizar el sistema operativo en la virtual machine.

Sin embargo, Terraform puede trabajar mano a mano con herramientas de administración de configuración como Ansible para simplificar y optimizar la configuración de la infraestructura. Por ejemplo, una organización podría usar Terraform para aprovisionar virtual machines y Ansible para configurar el software en esas máquinas.

Soluciones relacionadas
IBM Turbonomic

Escale automáticamente su infraestructura de TI actual para obtener un mayor rendimiento a menores costos.

Explorar IBM Turbonomic
Soluciones AIOps

Descubra cómo la IA para las operaciones de TI ofrece los insights que necesita para ayudar a impulsar un rendimiento empresarial excepcional.

Explore las soluciones de AIOps
Servicios de consultoría en automatización

Vaya más allá de la simple automatización de tareas para manejar procesos de alto perfil, orientados al cliente que generan ingresos con adopción y escala integradas.

Explorar los servicios de consultoría para la automatización
Dé el siguiente paso

Descubra cómo la IA para las operaciones de TI ofrece los insights para impulsar un rendimiento empresarial excepcional.

Explore Turbonomic Explore las soluciones de AIOps