Cerramos el capítulo con un repaso práctico de los comandos que usarás a diario con Terraform. Ya hemos visto algunos por separado; aquí los reunimos en orden, añadimos dos nuevos (fmt y validate) y los ordenamos como un flujo de trabajo real. Considéralo tu chuleta de comandos.

El flujo de trabajo completo

Este es el orden típico de los comandos en un proyecto de Terraform:

   fmt → validate → init → plan → apply → ... → destroy
  (formatea)(revisa) (prepara)(previsualiza)(aplica)  (elimina)

Vamos uno a uno.

terraform init: preparar el proyecto

Qué hace: inicializa el directorio de trabajo. Descarga los providers (subcapítulo 11.1) y configura el backend del estado (subcapítulo 11.3).

Cuándo se ejecuta:

  • La primera vez que trabajas en un proyecto.
  • Cuando añades o cambias un provider.
  • Cuando cambias la configuración del backend.
terraform init

Es el primer comando que ejecutas en cualquier proyecto nuevo. Sin él, los demás comandos no funcionan porque falta descargar los providers.

terraform fmt: formatear el código

Qué hace: formatea automáticamente tus archivos .tf para que tengan un estilo consistente (indentación, alineación, espacios). No cambia la lógica, solo la apariencia.

terraform fmt

Por qué usarlo: un código bien formateado es más fácil de leer y evita discusiones de estilo en el equipo. Es como un corrector de estilo automático. Se suele ejecutar antes de guardar o subir cambios. En equipos, se comprueba automáticamente en CI (Capítulo 22).

Analogía: fmt es como el botón «ordenar/alinear» de un documento: deja todo limpio y uniforme sin cambiar el contenido.

terraform validate: revisar que el código es correcto

Qué hace: comprueba que tu código es válido sintáctica y lógicamente, sin conectarse a AWS ni crear nada. Detecta errores como argumentos mal escritos o referencias inexistentes.

terraform validate

Por qué usarlo: te avisa de errores antes de intentar aplicar nada. Es una comprobación rápida y barata. Si validate falla, no tiene sentido seguir.

Diferencia con plan: validate solo revisa que el código esté bien escrito (no necesita credenciales). plan va más allá: consulta AWS y te dice qué cambios haría. Primero validate (¿está bien escrito?), luego plan (¿qué va a hacer?).

terraform plan: previsualizar los cambios

Qué hace: muestra qué cambios haría sin aplicarlos. Compara tu código, el estado y la realidad (subcapítulos 9.4 y 11.2).

terraform plan

Recuerda los símbolos: + crear, ~ modificar, - destruir. Es tu red de seguridad: revisas antes de tocar nada.

terraform apply: aplicar los cambios

Qué hace: ejecuta los cambios de verdad, tras mostrarte el plan y pedir confirmación (yes).

terraform apply

Después de aplicar, tu infraestructura real coincide con tu código, y el estado se actualiza.

Truco: terraform apply ya hace un plan internamente y te lo muestra antes de pedir confirmación, así que puedes revisar una última vez antes de escribir yes.

terraform destroy: eliminar la infraestructura

Qué hace: destruye todos los recursos gestionados, tras confirmación. Ideal para limpiar pruebas y dejar de pagar (subcapítulo 9.4).

terraform destroy

⚠️ Irreversible. Genial en pruebas, peligroso en producción. Úsalo con cabeza.

Tabla resumen de comandos

Comando Qué hace ¿Toca AWS? ¿Pide confirmación?
init Descarga providers y prepara backend No (solo descarga) No
fmt Formatea el código No No
validate Revisa que el código es válido No No
plan Previsualiza cambios Lee No
apply Aplica los cambios Sí (escribe) Sí (yes)
destroy Elimina todo Sí (borra) Sí (yes)

Otros comandos útiles (para conocer)

Además de los esenciales, hay otros que irás usando:

Comando Para qué
terraform show Ver el estado actual o un plan guardado
terraform state list Listar recursos gestionados (subcapítulo 11.2)
terraform output Ver los outputs definidos (subcapítulo 10.1)
terraform refresh Sincronizar el estado con la realidad
terraform import Traer recursos existentes al estado (Capítulo 20)
terraform graph Ver el grafo de dependencias

Un flujo de trabajo real, paso a paso

Así sería tu día a día creando infraestructura nueva:

1. terraform init       # solo la primera vez (o al cambiar providers/backend)
2. (escribes tu código .tf)
3. terraform fmt        # ordena el código
4. terraform validate   # ¿está bien escrito?
5. terraform plan       # ¿qué va a cambiar? -> revisas
6. terraform apply      # aplicas -> escribes "yes"
7. (usas tu infraestructura)
8. terraform destroy    # cuando ya no la necesites (en pruebas)

Consejo: Acostúmbrate a ejecutar siempre plan antes de apply y a leer el plan con atención. Es el hábito que te salvará de errores costosos. Muchos sustos en la nube se evitan simplemente leyendo bien lo que Terraform iba a hacer.

Lo que debes recordar

  • El flujo típico es initfmtvalidateplanapplydestroy.
  • init: prepara el proyecto (descarga providers, configura backend). Primer comando, imprescindible.
  • fmt: formatea el código (estilo limpio y uniforme).
  • validate: revisa que el código es válido, sin tocar AWS.
  • plan: previsualiza los cambios (no aplica nada). Tu red de seguridad.
  • apply: aplica los cambios (pide yes). destroy: elimina todo (pide yes, irreversible).
  • Hábito de oro: siempre plan antes de apply, y lee el plan con atención.

Con esto cierras el Capítulo 11. Ya tienes todas las piezas teóricas de Terraform: lenguaje, providers, estado y comandos. En el Capítulo 12 lo juntaremos todo construyendo tu primera infraestructura real: una VPC con un servidor EC2, paso a paso.

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados