Hoja de referencia de Terraform: comandos y ejemplos útiles
La lista de todos los comandos de Terraform
Aquí tienes una hoja de trucos de Terraform integral con comandos esenciales, elementos de configuración, gestión de recursos, módulos, variables, manejo del estado y mejores prácticas.
Terraform es una herramienta de código de infraestructura (IaC) de código abierto desarrollada por HashiCorp, que permite a los usuarios definir y aprovisionar infraestructura en múltiples proveedores de la nube (por ejemplo, AWS, Azure, GCP) utilizando archivos de configuración declarativa. Su propósito principal es automatizar el aprovisionamiento de infraestructura, garantizar la coherencia y reducir los errores manuales. Terraform soporta flujos de trabajo multinube, modulares y basados en estado, lo que lo convierte en un pilar de las prácticas modernas de DevOps.
Para más herramientas de desarrollo y flujos de trabajo, consulta Herramientas para desarrolladores: La guía completa de los flujos de trabajo de desarrollo modernos.

Principales beneficios de Terraform:
- Sintaxis declarativa: Define los estados deseados de la infraestructura en el código.
- Agnosticismo del proveedor: Funciona con AWS, Azure, GCP, Kubernetes y más.
- Gestión del estado: Rastrea los cambios de infraestructura para evitar conflictos.
Guía de instalación y configuración
https://developer.hashicorp.com/terraform/tutorials#get-started
El proceso de instalación de Terraform es bastante sencillo.
-
Linux (Ubuntu/Debian):
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform -
Windows (WSL):
wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip unzip terraform.zip -
macOS (Homebrew):
brew install terraform
Para mejorar la productividad en la terminal mientras trabajas con Terraform, consulta Atajos de teclado de Ubuntu: Hoja de trucos completa.
Verificación
terraform --version
Comandos de CLI de Terraform
Aquí tienes la lista de todos los comandos de Terraform:
| Comando | Descripción |
|---|---|
terraform init |
Inicializa un directorio de configuración de Terraform nuevo o existente |
terraform validate |
Comprueba si la configuración es válida |
terraform plan |
Muestra el plan de ejecución sin realizar cambios |
terraform apply |
Aplica los cambios necesarios para alcanzar el estado deseado |
terraform destroy |
Destruye la infraestructura gestionada por Terraform |
terraform fmt |
Reformatea los archivos de configuración en el estilo estándar |
terraform show |
Muestra el estado actual o el plan |
terraform refresh |
Actualiza el estado con la infraestructura real |
terraform providers |
Muestra los proveedores utilizados en la configuración |
terraform graph |
Visualiza las dependencias de recursos como un gráfico |
terraform workspace list |
Lista todos los espacios de trabajo disponibles |
terraform workspace new |
Crea un nuevo espacio de trabajo |
terraform workspace select |
Cambia a un espacio de trabajo específico |
terraform workspace show |
Muestra el nombre del espacio de trabajo actual |
terraform workspace delete |
Elimina un espacio de trabajo específico |
terraform output |
Muestra los valores de salida del archivo de estado |
terraform import |
Importa un recurso existente en Terraform |
terraform taint |
Marca un recurso para su recreación en la siguiente aplicación |
terraform untaint |
Elimina la marca de “tainted” de un recurso |
terraform state list |
Lista los recursos en el archivo de estado |
terraform state show |
Muestra los atributos de un solo recurso en el estado |
Esenciales de configuración
Extensiones de archivo
.tf: Archivos de configuración principales (sintaxis HCL).tfvars: Valores de variables
Tipos de bloques de Terraform
- Ejemplo de proveedor
provider "aws" { region = "us-east-1" } - Ejemplo de recurso
resource "aws_instance" "web" { ami = "ami-0abcdef" instance_type = "t2.micro" } - Ejemplo de variable
variable "instance_count" { type = number default = 2 } - Ejemplo de salida
output "instance_ip" { value = aws_instance.web.public_ip } - Ejemplo de módulo
module "vpc" { source = "./modules/vpc" cidr_block = var.vpc_cidr }
Trabajando con variables
- Declaración de variables
variable "region" { description = "Región de AWS" default = "us-east-1" } - Asignación de valores
- CLI:
terraform apply -var="region=us-west-2" - Archivo tfvars:
terraform apply -var-file="prod.tfvars"
- CLI:
- Tipos:
string,number,bool,list,map,object
Gestión del estado
- Archivo de estado:
terraform.tfstate - Estado remoto (Ejemplo S3)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" } - Ver estado:
terraform show
terraform state list
Bucles y condicionales
- Count
resource "aws_instance" "web" { count = 3 ... } - For_each
resource "aws_s3_bucket" "b" { for_each = var.bucket_names bucket = each.value } - Condicionales
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
Funciones
- Interpolación de cadenas:
resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" } - Ejemplos de listas y mapas:
locals { my_map = { a = 1, b = 2 } }
Provisioners
Utilizados para la inicialización de recursos. Ejemplo:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo Instance created"
}
}
Mejores prácticas
- Control de versiones de todos los archivos
.tf - Bloquear versiones de proveedores para garantizar despliegues consistentes
- Backend remoto para la gestión del estado (S3, Azure Blob, etc.)
- Cifrar archivos de estado en backends remotos
- Modularizar la infraestructura utilizando módulos reutilizables
- Documentar tus configuraciones
- Probar en staging antes de la producción
Referencias adicionales
- Ayuda:
terraform --helpo[comando] --helppara ayuda específica del comando - Depuración: Establece
TF_LOG=INFOoTF_LOG=DEBUGpara registros verbosos - Formato:
terraform fmt - Codificación: Para operaciones de codificación/decodificación Base64, consulta Codificación - decodificación Base64 en Windows, Linux y Mac
Esta hoja de trucos proporciona una referencia de acceso rápido a los aspectos más comunes y avanzados del uso de Terraform, desde comandos hasta mejores prácticas, haciéndola práctica tanto para principiantes como para usuarios avanzados. ¡Que tengas un gran día!
Enlaces útiles
- https://developer.hashicorp.com/terraform
- Hoja de trucos de Docker
- Hoja de trucos de Docker Compose - Comandos más útiles con ejemplos
- Hoja de trucos de Kubernetes
- Despliegue de proyecto Flutter con backend a AWS Amplify
- Despliegue de sitio web generado por Hugo a AWS S3
- Rendimiento de AWS lambda: JavaScript vs Python vs Golang
- Lambdas en capas con AWS SAM y Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio como alternativa a Aws S3. Resumen e instalación de Minio