¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo leer un plan de OpenTofu

Después de esta lección: Puedo leer un plan y decir qué recursos se crean, cambian o destruyen.

Lección de 60 min9 comandosLaboratorio de OpenTofu: la infraestructura como código, con plan, apply y estado, en una VM

Un plan lista lo que va a cambiar

Leer un plan de OpenTofu es mirar la lista de cambios que la herramienta propone y decidir si aplicarla. Es la revisión que evita borrar por error lo que otra persona usa.

Una biblioteca quita una sala de su archivo y añade dos. Un plan bien leído dice, antes de tocar nada, que una sala se destruye y dos se crean.

Al final de esta lección

Nota

Puedo leer un plan y decir qué recursos se crean, cambian o destruyen.

Palabras clave

PalabraQué significaEjemplo
Acciónlo que el plan hará con un recursocreate
Cambio en el sitioun recurso que se modifica sin destruirlo~
Reemplazodestruir un recurso y crear otro en su lugar-/+
Triggerun valor que, si cambia, obliga a reemplazartriggers_replace
Resumenla última línea del plan, con tres cuentas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cada línea del plan empieza con un símbolo

El plan usa un símbolo por recurso: + crear, - destruir, ~ cambiar en el sitio y -/+ reemplazar. La última línea, el resumen, cuenta cuántos hay de cada.

Las órdenes siguientes crean un proyecto con tres salas hechas con for_each y un cartel. Después piden un plan con otra lista de salas y filtran las líneas que dicen qué pasará.

Crea una carpeta de trabajo

Comando
mkdir -p ~/prestamos

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Entra en ella

Comando
cd ~/prestamos

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe tres salas y un cartel

Comando
printf 'variable "salas" {\n  type    = set(string)\n  default = ["lectura", "estudio", "prensa"]\n}\n\nresource "terraform_data" "sala" {\n  for_each = var.salas\n  input    = format("sala de %%s", each.key)\n}\n\nresource "terraform_data" "cartel" {\n  input            = "abierto"\n  triggers_replace = "v1"\n}\n' > main.tf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Aplica y mira la cuenta final

Comando
tofu apply -auto-approve -no-color | tail -n 1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pide un plan con otra lista de salas

Comando
tofu plan -no-color -var 'salas=["lectura", "prensa", "musica", "cine"]' | grep -E "will be|Plan:"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo: cambiar la lista de salas

RecursoAntesDespuésAcción
sala["lectura"]EstáEstáNada
sala["prensa"]EstáEstáNada
sala["estudio"]EstáNo estádestroy
sala["musica"]No estáEstácreate
sala["cine"]No estáEstácreate

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cambiar un valor no siempre destruye el recurso

Cuando cambia el input de un terraform_data, el plan lo marca con ~: se actualiza en el sitio y el recurso sigue existiendo. Las dos órdenes siguientes cambian el cartel de "abierto" a "cerrado", y piden el plan.

El plan no cambia nada hasta que apliques. Por eso puedes leerlo con calma.

Cambia el input del cartel

Comando
sed -i 's/input            = "abierto"/input            = "cerrado"/' main.tf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Filtra el plan del cambio

Comando
tofu plan -no-color | grep -E "will be|Plan:|input"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un trigger cambiado obliga a reemplazar

triggers_replace es un valor que, si cambia, hace que el recurso se destruya y se cree de nuevo. El plan lo dice con must be replaced y el símbolo -/+.

En un servidor real eso significa que desaparece y vuelve a nacer, con sus datos perdidos. Por eso conviene leer el resumen: un reemplazo cuenta uno a crear y uno a destruir.

Cambia el trigger del cartel

Comando
sed -i 's/"v1"/"v2"/' main.tf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Filtra el plan del reemplazo

Comando
tofu plan -no-color | grep -E "will be|must be|Plan:|triggers"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente mira solo cuántas cosas cambian y no cuáles. Un Plan: 1 to add, 0 to change, 1 to destroy parece un cambio pequeño. Pero puede ser un reemplazo: una cosa que se destruye y se vuelve a crear. Lee siempre las líneas will be y must be.

Para ir más lejos

Escribe tofu plan -destroy -no-color | grep "Plan:" en la terminal. Ese plan imagina que quitas todo el proyecto: dice 4 to destroy, tres salas y un cartel. No destruye nada hasta que tú lo apliques.

Después apaga el cartel y las salas con tofu destroy, que antes te pregunta. La carpeta queda vacía, lista para otro experimento.

Sobre este laboratorio y su código: Laboratorio de OpenTofu: la infraestructura como código, con plan, apply y estado, en una VM

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.