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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Acción | lo que el plan hará con un recurso | create |
| Cambio en el sitio | un recurso que se modifica sin destruirlo | ~ |
| Reemplazo | destruir un recurso y crear otro en su lugar | -/+ |
| Trigger | un valor que, si cambia, obliga a reemplazar | triggers_replace |
| Resumen | la ú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
mkdir -p ~/prestamosSe 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
cd ~/prestamosSe 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
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.tfSe 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
tofu apply -auto-approve -no-color | tail -n 1Se 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
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
| Recurso | Antes | Después | Acció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
sed -i 's/input = "abierto"/input = "cerrado"/' main.tfSe 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
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
sed -i 's/"v1"/"v2"/' main.tfSe 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
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.