Conceptos

OpenTofu

Fork open source de Terraform mantenido por la Linux Foundation. Compatible con HCL y providers de Terraform, creado en respuesta al cambio de licencia de HashiCorp a BSL 1.1.

evergreen#iac#opentofu#open-source#devops

OpenTofu es un fork de Terraform creado en septiembre de 2023 cuando HashiCorp cambió la licencia de Terraform de MPL 2.0 (open source) a BSL 1.1 (source-available, con restricciones comerciales). La Linux Foundation adoptó el proyecto para garantizar que una alternativa verdaderamente open source existiera.

¿Por qué existe?

La cronología

  1. 2014-2023 — Terraform bajo licencia MPL 2.0 (open source permisiva)
  2. Agosto 2023 — HashiCorp cambia a BSL 1.1 (prohíbe productos competitivos)
  3. Septiembre 2023 — Manifiesto OpenTF firmado por 100+ empresas
  4. Octubre 2023 — Linux Foundation adopta el proyecto como OpenTofu
  5. Enero 2024 — OpenTofu 1.6.0 (primera release estable)

¿Qué prohíbe BSL 1.1?

La licencia BSL 1.1 de Terraform permite usar, copiar y modificar el código, pero prohíbe ofrecer un producto competitivo basado en él. Esto afecta a:

  • Empresas que ofrecen Terraform-as-a-Service
  • Plataformas de IaC que integran Terraform
  • Managed services que compiten con Terraform Cloud

Para usuarios finales que solo usan Terraform internamente, el impacto práctico es mínimo.

Compatibilidad

OpenTofu mantiene compatibilidad con el ecosistema Terraform:

# Migración básica
# 1. Instalar OpenTofu
brew install opentofu
 
# 2. Reemplazar comandos (drop-in replacement)
tofu init       # en lugar de terraform init
tofu plan       # en lugar de terraform plan
tofu apply      # en lugar de terraform apply
 
# 3. El state file es compatible
# No se requiere migración de estado

¿Qué es compatible?

  • Archivos .tf en HCL — 100% compatible
  • Providers del Terraform Registry — funcionan directamente
  • Módulos existentes — sin cambios
  • State files — formato compatible
  • Backend configurations — S3, GCS, Azure, etc.

¿Qué diverge?

OpenTofu ha comenzado a agregar features propias:

  • State encryption — encriptación nativa del state file (no disponible en Terraform OSS)
  • Early variable/locals evaluation — evaluación temprana de variables
  • Registry propio — registry.opentofu.org como alternativa

¿Cuándo elegir OpenTofu?

Elegir OpenTofu cuando:

  • La licencia open source es un requisito (compliance, política corporativa)
  • Construyes productos o servicios sobre la herramienta de IaC
  • Quieres contribuir al desarrollo del proyecto
  • Necesitas state encryption nativo
  • Prefieres gobernanza de la Linux Foundation

Quedarse con Terraform cuando:

  • Usas Terraform Cloud/Enterprise y sus features exclusivas
  • El equipo ya está capacitado en Terraform y no hay razón de licencia para cambiar
  • Necesitas soporte comercial de HashiCorp
  • La estabilidad del ecosistema establecido es prioridad

Comparación directa

AspectoTerraformOpenTofu
LicenciaBSL 1.1MPL 2.0 (open source)
GobernanzaHashiCorpLinux Foundation
CLIterraformtofu
HCL compatible
ProvidersTerraform RegistryCompatible + registry propio
State encryptionSolo en EnterpriseIncluido (gratis)
Soporte comercialHashiCorpSpacelift, env0, Scalr
CommunityEstablecidaCreciendo

Ejemplo práctico

# main.tf — funciona igual en Terraform y OpenTofu
terraform {
  required_version = ">= 1.6.0"
 
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
 
  backend "s3" {
    bucket = "my-state-bucket"
    key    = "prod/terraform.tfstate"
    region = "us-east-1"
  }
}
 
provider "aws" {
  region = "us-east-1"
}
 
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "5.5.0"
 
  name = "production"
  cidr = "10.0.0.0/16"
}

State encryption (exclusivo de OpenTofu)

# Solo en OpenTofu
terraform {
  encryption {
    key_provider "pbkdf2" "main" {
      passphrase = var.state_passphrase
    }
 
    method "aes_gcm" "main" {
      keys = key_provider.pbkdf2.main
    }
 
    state {
      method = method.aes_gcm.main
    }
  }
}

Ecosistema y adopción

Empresas que respaldan OpenTofu:

  • Spacelift — plataforma de IaC, contribuidor principal
  • env0 — plataforma de IaC
  • Scalr — gestión de Terraform/OpenTofu
  • Gruntwork — herramientas de IaC (Terragrunt)
  • Harness — plataforma de CI/CD

¿Por qué importa?

El cambio de licencia de Terraform a BSL fue un punto de inflexión para el ecosistema de IaC. OpenTofu garantiza que la inversión en conocimiento de HCL y módulos existentes no quede atrapada en una licencia restrictiva. Para organizaciones que valoran el open source como principio, no solo como conveniencia, OpenTofu es la alternativa viable.

Referencias

Conceptos