Terraform & OpenTofu - Infraestructura como Código¶
🚀 Iniciar con Terraform en 15 minutos¶
¿Nuevo en Terraform? Comienza aquí:
- Tutorial: Primeros pasos con Terraform - Crea tu primera infraestructura en AWS
- Guía de instalación rápida - Instala Terraform en tu sistema
- Tutorial interactivo - Aprende con ejemplos prácticos
Introducción a Terraform¶
Terraform es una herramienta de Infraestructura como Código (IaC) desarrollada por HashiCorp que permite definir y gestionar infraestructura de manera declarativa usando archivos de configuración.
Introducción a OpenTofu¶
OpenTofu es un fork de Terraform que surgió en 2023 como respuesta al cambio de licencia de HashiCorp de MPL 2.0 a BSL 1.1. OpenTofu mantiene la compatibilidad total con Terraform mientras garantiza que permanezca como software de código abierto bajo la licencia MPL 2.0.
Comparativa: Terraform vs OpenTofu¶
Compatibilidad¶
- Terraform: Versión original de HashiCorp
- OpenTofu: 100% compatible con Terraform, incluyendo:
- Sintaxis HCL idéntica
- Mismos providers y módulos
- Mismos comandos y workflows
- Migración transparente
Licencias¶
- Terraform: BSL 1.1 (Business Source License) - restrictiva para uso comercial
- OpenTofu: MPL 2.0 (Mozilla Public License) - verdadero código abierto
Desarrollo¶
- Terraform: Desarrollado por HashiCorp
- OpenTofu: Desarrollado por la comunidad, liderado por Gruntwork y otros contribuyentes
Roadmap¶
- Terraform: Controlado por HashiCorp
- OpenTofu: Roadmap abierto y dirigido por la comunidad
Migración¶
La migración de Terraform a OpenTofu es completamente transparente:
# Simplemente reemplaza el binario
# Los archivos .tf, .tfvars y .tfstate funcionan sin cambios
Conceptos fundamentales¶
Providers¶
Los providers son plugins que permiten a Terraform interactuar con diferentes servicios y plataformas.
# Configuración de provider AWS
provider "aws" {
region = "us-west-2"
}
Resources¶
Los resources representan objetos de infraestructura que Terraform gestiona.
# Crear una instancia EC2
resource "aws_instance" "example" {
ami = "ami-12345678"
instance_type = "t2.micro"
tags = {
Name = "ExampleInstance"
}
}
Data Sources¶
Los data sources permiten obtener información sobre recursos existentes.
# Obtener información de una AMI
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
}
Sintaxis básica¶
Variables¶
# variables.tf
variable "instance_type" {
description = "Tipo de instancia EC2"
type = string
default = "t2.micro"
}
variable "environment" {
description = "Ambiente de despliegue"
type = string
}
Outputs¶
# outputs.tf
output "instance_id" {
description = "ID de la instancia creada"
value = aws_instance.example.id
}
output "public_ip" {
description = "IP pública de la instancia"
value = aws_instance.example.public_ip
}
Comandos básicos¶
# Inicializar Terraform
terraform init
# Planificar cambios
terraform plan
# Aplicar cambios
terraform apply
# Destruir infraestructura
terraform destroy
# Mostrar estado
terraform show
# Listar recursos
terraform state list
Casos de uso¶
- Gestión de infraestructura en la nube
- Automatización de despliegues
- Gestión de configuraciones
- Multi-cloud deployments
Mejores prácticas¶
- Usar versionado de código
- Separar configuración por ambientes
- Utilizar módulos reutilizables
- Implementar políticas de seguridad
- Documentar configuraciones
Próximos pasos¶
En las siguientes secciones exploraremos:
- Módulos de Terraform
- Workspaces y estados remotos
- Integración con CI/CD
- Políticas con Sentinel
- Terraform Cloud
Recursos adicionales¶
Terraform (HashiCorp)¶
- Sitio web oficial: terraform.io
- Documentación: developer.hashicorp.com/terraform
- GitHub: github.com/hashicorp/terraform
- Registry: registry.terraform.io
OpenTofu¶
- Sitio web oficial: opentofu.org
- Documentación: opentofu.org/docs
- GitHub: github.com/opentofu/opentofu
- Registry: registry.opentofu.org
- Migración: opentofu.org/docs/intro/migration
Comunidad¶
Videos tutoriales¶
Video: Terraform desde cero - Infraestructura como Código completa
- Reddit: r/terraform, r/opentofu
- Stack Overflow: stackoverflow.com/questions/tagged/terraform, stackoverflow.com/questions/tagged/opentofu
- Discord: discord.gg/hashicorp
- Foros oficiales: discuss.hashicorp.com
Artículos y comparativas¶
- Análisis de licencias: hashicorp.com/blog/announcing-hashicorp-license-v2
- Nacimiento de OpenTofu: opentofu.org/blog/opentofu-announcement
- Guía de migración: gruntwork.io/blog/opentofu-vs-terraform
¿Buscas comandos rápidos?
Consulta nuestras Recetas rápidas para comandos copy-paste comunes.
¿Problemas con Terraform?
Revisa nuestra sección de troubleshooting para soluciones a errores comunes.