🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

IaC con Terraform y Pulumi: Infraestructura como Código Multi-cloud

Actualizado el 21 de marzo de 2026

La gestión de infraestructura ha evolucionado desde el rack físico hasta la nube, y ahora hacia la abstracción completa mediante código. Para cualquier SysAdmin que busque dominar la automatización multi-cloud, dos herramientas destacan por su enfoque y potencia: Terraform y Pulumi. Ambas permiten definir, aprovisionar y gestionar recursos cloud mediante archivos de configuración, pero lo hacen con filosofías notablemente diferentes.

Este artículo es una guía extensa para SysAdmins que quieren entender a fondo Terraform IaC y Pulumi multi-cloud, comparar sus paradigmas, y decidir cuál adoptar según el contexto del proyecto. No se trata de una batalla de frameworks, sino de un análisis pragmático para la automatización real.


¿Por qué IaC Multi-cloud es el nuevo estándar?

El SysAdmin moderno ya no gestiona una sola nube. La estrategia multi-cloud (AWS + Azure + GCP, o cloud + on-premise) es la norma para evitar vendor lock-in, optimizar costes y aprovechar servicios específicos de cada proveedor. Sin IaC, mantener la consistencia entre entornos es una pesadilla.

La infraestructura código resuelve esto con tres pilares:

  • Reproducibilidad: El mismo código genera el mismo entorno, siempre.
  • Control de versiones: Cada cambio en infraestructura se trackea como un commit.
  • Automatización SysAdmin: Se eliminan los clics manuales en consolas web, reduciendo errores humanos y tiempo de despliegue.

Tanto Terraform como Pulumi son herramientas declarativas: tú describes el estado deseado (quiero 3 máquinas EC2, un bucket S3 y una VPC), y la herramienta se encarga de alcanzarlo. La diferencia clave está en el lenguaje de definición y el modelo de estado.

[INFO] La declaratividad es clave: no dices cómo crear el recurso, sino qué recurso quieres. La herramienta calcula el plan de ejecución.


Terraform IaC: El veterano consolidado

Terraform, de HashiCorp, es el estándar de facto para IaC desde 2014. Su lenguaje propio, HCL (HashiCorp Configuration Language), está diseñado específicamente para describir infraestructura. Es conciso, legible y no requiere conocimientos de programación general.

Ventajas clave para SysAdmins

  • Madurez y ecosistema: La comunidad más grande de providers (AWS, Azure, GCP, Kubernetes, GitHub, Cloudflare, etc.). Cualquier recurso imaginable tiene un provider.
  • Estado remoto y locking: Terraform gestiona un archivo de estado (terraform.tfstate) que mapea recursos reales con tu configuración. Con backends como S3 + DynamoDB, el equipo colabora sin conflictos.
  • Plan de ejecución: terraform plan muestra exactamente qué recursos se crearán, modificarán o destruirán antes de ejecutar. Esto da seguridad al SysAdmin.

Ejemplo práctico: Desplegar una VM en AWS con Terraform

# providers.tf
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
  backend "s3" {
    bucket = "mi-terraform-state-bucket"
    key    = "prod/ec2/terraform.tfstate"
    region = "us-east-1"
  }
}

# main.tf
resource "aws_instance" "servidor_web" {
  ami           = "ami-0c55b159cbfafe1f0" # Amazon Linux 2
  instance_type = "t3.micro"
  tags = {
    Name = "ServidorWeb-Prod"
  }
}

Limitaciones de Terraform

  • HCL no es Turing completo: Para lógica compleja (bucles, condicionales, validaciones) necesitas recurrir a count, for_each o módulos, lo que puede volverse verboso.
  • Gestión de estado: El archivo de estado es crítico y frágil. Si se corrompe o hay conflictos, la recuperación es manual.
  • Testing nativo limitado: Aunque existen herramientas como Terratest, el testing integrado es básico.

Pulumi multi-cloud: IaC con lenguajes de programación reales

Pulumi llegó en 2018 con una propuesta disruptiva: usar lenguajes de programación general (TypeScript, Python, Go, C#, Java) para definir infraestructura. Esto permite usar bucles, clases, herencia, testing unitario y todo el ecosistema de paquetes de cada lenguaje.

Ventajas clave para SysAdmins

  • Abstracción y reutilización: Puedes crear funciones que generen infraestructura, usar herencia para entornos (dev, staging, prod) y compartir código como librerías.
  • Testing integrado: Con Pulumi, puedes escribir tests unitarios y de integración usando tu framework favorito (Jest, pytest, Go test).
  • Multi-cloud nativo: El mismo lenguaje y paradigma para AWS, Azure, GCP, Kubernetes, etc. El cambio de nube es cuestión de cambiar el provider en el código.

Ejemplo práctico: Desplegar una VM en AWS con Pulumi (TypeScript)

import * as aws from "@pulumi/aws";

const servidorWeb = new aws.ec2.Instance("servidor-web", {
    ami: "ami-0c55b159cbfafe1f0",
    instanceType: "t3.micro",
    tags: { Name: "ServidorWeb-Prod" },
});

export const ipPublica = servidorWeb.publicIp;

Limitaciones de Pulumi

  • Curva de aprendizaje: Un SysAdmin que no programe en TypeScript o Python tendrá que aprender el lenguaje además de IaC.
  • Ecosistema más joven: Aunque crece rápido, la cantidad de providers y ejemplos es menor que Terraform.
  • Dependencia de runtime: Necesitas Node.js, Python o Go instalado en el pipeline de CI/CD, lo que añade complejidad.

Comparativa directa: Terraform vs Pulumi para SysAdmin

AspectoTerraform (HCL)Pulumi (TypeScript/Python/Go)
LenguajeHCL (DSL propio)Lenguajes de propósito general
Curva aprendizajeBaja (sintaxis simple)Media (depende del lenguaje)
TestingLimitado (Terratest)Nativo (Jest, pytest)
EstadoArchivo .tfstate (frágil)Managed service o archivo
Bucles/condicionescount, for_each, módulosBucles reales (for, map, filter)
ComunidadMuy grande y maduraCreciendo, activa
Multi-cloudExcelente (providers oficiales)Excelente (mismo lenguaje)
OrquestaciónTerraform Cloud / EnterprisePulumi Cloud / Self-hosted
Casos de usoInfraestructura estándar, equipos pequeños/medianosInfraestructura compleja, equipos con background dev

[WARNING] Elegir la herramienta incorrecta puede generar deuda técnica. Si tu equipo es puramente operaciones y no programa, Terraform será más productivo. Si tienes desarrolladores que ya usan TypeScript, Pulumi multiplica la eficiencia.


Automatización SysAdmin con IaC: Estrategias multi-cloud

Independientemente de la herramienta, el flujo de trabajo para un SysAdmin que automatiza multi-cloud sigue estos pasos:

1. Definir el estado deseado en código

Escribes archivos (.tf o .ts) que describen la infraestructura: redes, máquinas, bases de datos, DNS, etc.

2. Inicializar el proyecto

  • Terraform: terraform init descarga providers y configura el backend.
  • Pulumi: pulumi new crea el proyecto y descarga dependencias.

3. Ejecutar un plan o preview

  • Terraform: terraform plan muestra los cambios.
  • Pulumi: pulumi preview hace lo mismo.

4. Aplicar los cambios

  • Terraform: terraform apply (con confirmación).
  • Pulumi: pulumi up (con confirmación).

5. Integración continua (CI/CD)

Ambas herramientas se integran con GitHub Actions, GitLab CI, Jenkins o CircleCI. El pipeline típico:

  1. Hacer commit del código IaC.
  2. CI ejecuta plan o preview.
  3. Tras revisión, se ejecuta apply o up automáticamente.

Ejemplo de pipeline con Terraform y GitHub Actions

name: Deploy infraestructura
on: [push]
jobs:
  terraform:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: hashicorp/setup-terraform@v2
      - run: terraform init
      - run: terraform plan
      - run: terraform apply -auto-approve

[TIP] Para multi-cloud real, define providers separados en tu código y usa workspaces (Terraform) o stacks (Pulumi) para aislar entornos (dev, staging, prod) y clouds.


¿Cuándo usar cada uno? Guía de decisión

Elige Terraform IaC si:

  • Tu equipo es principalmente de operaciones o sysadmin sin background en programación.
  • Necesitas un ecosistema probado con cientos de providers.
  • La infraestructura es relativamente estándar (VMs, VPCs, bases de datos).
  • Prefieres un DSL simple y directo.

Elige Pulumi multi-cloud si:

  • Tu equipo incluye desarrolladores que ya usan TypeScript, Python o Go.
  • Necesitas lógica compleja (bucles anidados, condicionales avanzados, validaciones).
  • Quieres testing unitario de infraestructura.
  • Planeas una estrategia multi-cloud o híbrida con mucho dinamismo.

Escenario híbrido (recomendado para equipos grandes)

Usa Terraform para la infraestructura base (redes, seguridad, cuentas) y Pulumi para capas de aplicación que requieren lógica más rica. Ambas pueden coexistir mediante state sharing o invocación desde scripts.


Buenas prácticas para SysAdmins en IaC multi-cloud

Independientemente de la herramienta, estas reglas son universales:

  1. Nunca modifiques recursos manualmente desde la consola cloud. Si lo haces, el estado de IaC se desincronizará. Usa terraform import o pulumi import para sincronizar.
  2. Usa módulos o componentes reutilizables. Crea bloques de infraestructura estándar (VPC, cluster Kubernetes, base de datos) y reutilízalos en diferentes entornos y clouds.
  3. Versiona todo el código IaC. Cada cambio debe tener un commit con mensaje descriptivo.
  4. Protege el estado remoto. Usa DynamoDB (Terraform) o Pulumi Cloud con políticas de acceso.
  5. Implementa políticas de seguridad como código. Con Terraform Sentinel o Pulumi Policy as Code, puedes bloquear recursos inseguros (ej: buckets públicos).
  6. Documenta las dependencias. En multi-cloud, un recurso en AWS puede depender de otro en Azure (ej: DNS). Usa outputs y referencias cruzadas.

Conclusión: El futuro es código, pero elige tu lenguaje

Terraform IaC sigue siendo la navaja suiza del SysAdmin: fiable, predecible y con una comunidad que lo respalda. Pulumi multi-cloud es el cuchillo de chef: más versátil y potente, pero requiere más habilidad.

La decisión no es binaria. Muchos equipos empiezan con Terraform por su simplicidad, y migran a Pulumi cuando la complejidad lo justifica. Lo importante es entender que la infraestructura código ya no es opcional; es la base de cualquier automatización SysAdmin moderna.

El SysAdmin que domina ambas herramientas tiene una ventaja competitiva brutal: puede adaptar la solución al problema, no al revés.

[INFO] Si estás empezando, Terraform te dará resultados rápidos. Si ya tienes experiencia, Pulumi te abrirá las puertas a IaC con superpoderes de programación.


¿Ya tienes experiencia con alguna de estas herramientas? ¿Has migrado de Terraform a Pulumi o viceversa? Comparte tu caso de uso en los comentarios.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel