¿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

Plan, apply y estado en OpenTofu

Después de esta lección: Puedo ejecutar un plan, aplicarlo y decir para qué sirve el archivo de estado.

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

Infraestructura como código: describir en vez de hacer

La infraestructura como código (en inglés, infrastructure as code) consiste en describir en archivos los servidores y los servicios que necesitas. En lugar de crearlos a mano, los describes. Así puedes repetirlos, revisarlos y volver atrás igual que con un programa.

Una biblioteca universitaria quiere la misma sala de estudio en tres campus. Hacerla tres veces a mano da tres salas un poco distintas. Un archivo da tres salas iguales.

Al final de esta lección

Nota

Puedo ejecutar un plan, aplicarlo y decir para qué sirve el archivo de estado.

Palabras clave

PalabraQué significaEjemplo
OpenTofula herramienta que lee tus archivos y crea lo que describen
Recursouna cosa que el archivo describeterraform_data
Planla lista de cambios, mostrada antes de hacerlostofu plan
Applyhacer los cambios que el plan listótofu apply
Estadoel archivo donde OpenTofu anota lo que ya creóterraform.tfstate
Proveedorun complemento que habla con una nube real

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

Un archivo dice cómo debe quedar todo

En OpenTofu no escribes los pasos. Escribes el estado deseado: qué recursos quieres y con qué valores. La herramienta decide qué hacer para llegar ahí.

OpenTofu es la herramienta de código abierto derivada de Terraform. En este laboratorio no hay nube: usarás terraform_data, un recurso incorporado que guarda un valor. Todo lo demás es real: el plan, el apply y el estado funcionan igual con una nube de verdad.

Crea una carpeta de trabajo

Comando
mkdir -p ~/biblioteca

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 ~/biblioteca

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

Escribe el archivo main.tf

Comando
printf 'resource "terraform_data" "sala" {\n  input = "sala de lectura"\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.

Lee lo que escribiste

Comando
cat 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.

Cada parte del archivo tiene su papel

Texto del archivoQué esQué significa
resourcePalabra reservadaAquí empieza la descripción de una cosa
"terraform_data"El tipoUn recurso incorporado que guarda un valor
"sala"El nombreCómo lo llamas tú; su dirección será terraform_data.sala
input = "sala de lectura"Un argumentoEl valor que el recurso guarda

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

El plan muestra los cambios antes de hacerlos

tofu init prepara la carpeta. Un proyecto real descarga aquí sus proveedores; este no tiene ninguno, así que acaba enseguida y dice que se inicializó con éxito.

tofu plan compara el archivo con el estado e imprime qué haría. Un + significa crear. La última línea lo suma: Plan: 1 to add, 0 to change, 0 to destroy. Un plan nunca cambia nada.

Prepara la carpeta

Comando
tofu init -no-color

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

Pide el plan

Comando
tofu plan -no-color

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

Apply hace los cambios, el estado los recuerda

tofu apply hace lo que el plan listó. Sin -auto-approve te pide escribir yes antes; el botón lo añade por ti. Acaba con Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

El recurso queda anotado en el estado, un archivo de texto llamado terraform.tfstate. Las tres órdenes siguientes lo muestran: la lista de recursos y el valor guardado.

Aplica el plan

Comando
tofu apply -auto-approve -no-color

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

Lista lo que el estado recuerda

Comando
tofu state list

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

Lee el valor guardado en el estado

Comando
jq -r '.resources[0].instances[0].attributes.input.value' terraform.tfstate

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 cree que el archivo de estado es una copia del archivo .tf. No lo es. El .tf dice lo que quieres; el estado dice lo que OpenTofu ya creó. El plan compara los dos. Si borras el estado, OpenTofu cree que no ha creado nada.

Un archivo igual da un plan vacío

Ejecuta el plan otra vez justo después del apply. El estado ya tiene lo que el archivo describe, y dice No changes.

Ahora cambia el texto del archivo con sed, que busca y reemplaza. El plan distingue entre algo nuevo y algo cambiado: un ~ marca un cambio en el sitio. Las dos últimas órdenes filtran el plan para dejar solo tres líneas.

Pide otro plan

Comando
tofu plan -no-color

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

Cambia el valor en el archivo

Comando
sed -i 's/sala de lectura/sala de estudio/' 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

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

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

Qué hace el plan con cada recurso

En el archivoEn el estadoAcción del plan
Está, con el mismo valorEstáNada
Está, con otro valorEstáupdate (~)
EstáNo estácreate (+)
No estáEstádestroy (-)

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

Para ir más lejos

Cuando acabes, entra en ~/biblioteca y escribe un segundo recurso terraform_data con otro nombre. Antes de aplicar, di en voz alta qué dirá la última línea del plan.

Después abre el README del laboratorio con cat ~/README.md: su primera parte trabaja la carpeta hello, y las siguientes te piden un proyecto propio.

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.