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.
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
- 2014-2023 — Terraform bajo licencia MPL 2.0 (open source permisiva)
- Agosto 2023 — HashiCorp cambia a BSL 1.1 (prohíbe productos competitivos)
- Septiembre 2023 — Manifiesto OpenTF firmado por 100+ empresas
- Octubre 2023 — Linux Foundation adopta el proyecto como OpenTofu
- 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
.tfen 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
| Aspecto | Terraform | OpenTofu |
|---|---|---|
| Licencia | BSL 1.1 | MPL 2.0 (open source) |
| Gobernanza | HashiCorp | Linux Foundation |
| CLI | terraform | tofu |
| HCL compatible | Sí | Sí |
| Providers | Terraform Registry | Compatible + registry propio |
| State encryption | Solo en Enterprise | Incluido (gratis) |
| Soporte comercial | HashiCorp | Spacelift, env0, Scalr |
| Community | Establecida | Creciendo |
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
- OpenTofu Documentation — Linux Foundation, 2024. Documentación oficial.
- OpenTofu Manifesto — OpenTofu, 2023. El manifiesto original con los firmantes.
- HashiCorp BSL FAQ — HashiCorp, 2023. Explicación oficial del cambio de licencia.
- OpenTofu vs Terraform — OpenTofu, 2024. Guía oficial de migración.
- The Future of Terraform Must Be Open — Yevgeniy Brikman, 2023. Perspectiva del autor de «Terraform: Up & Running».