Decirlo una vez, construirlo siempre
Un centro quiere los mismos diez ordenadores en cada aula, montados de la misma manera. A mano, diez veces, salen diez aulas un poco distintas. La infraestructura como código escribe las aulas en un archivo: una herramienta construye lo que el archivo describe, las veces que haga falta, y te enseña lo que va a cambiar antes de cambiarlo.
Al terminar esta lección
Nota
Puedo decir qué es un plan, para qué sirve el estado y por qué una herramienta planifica antes de cambiar nada.
Palabras clave
- OpenTofu: una herramienta libre y gratuita que lee archivos y construye lo que describen.
- Recurso: una cosa que describe un archivo. Aquí guarda un valor; con un proveedor podría ser un servidor.
- Plan: la lista de cambios que OpenTofu haría, mostrada antes de hacerlos.
- Apply (aplicar): hacer los cambios que el plan enumeró.
- Estado (state): el archivo donde OpenTofu anota lo que ya ha construido.
- Proveedor (provider): un complemento que habla con una nube real. Esta máquina no puede descargar ninguno.
Para empezar: lo que ya sabes
Nota
Responde mentalmente. 1. ¿Qué es una variable en un programa? 2. Si pides dos veces una taza de té, ¿tienes una o dos? 3. ¿Para qué sirve una lista de tareas al día siguiente? Vas a encontrarte las tres enseguida.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección. Este laboratorio es una máquina Ubuntu completa para ti, así que tarda un poco más en arrancar que un contenedor, y descarga OpenTofu la primera vez, por lo que necesitas una cuenta gratuita. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno tras otro en la misma sesión. Si uno dice que la máquina aún está arrancando, espera unos segundos y púlsalo otra vez. Para verlos, o para escribir los tuyos, pulsa Abrir terminal en la barra.
Un proyecto es una carpeta de archivos
El laboratorio te da un proyecto mínimo en ~/tofu-lab/hello. cd te lleva allí. El archivo main.tf contiene un recurso llamado hello del tipo integrado terraform_data. Guarda el valor "hello" como su input (entrada) y lo devuelve como output (salida). Un segundo bloque muestra esa salida. No se crea nada fuera de OpenTofu: el laboratorio no tiene ninguna nube donde crear cosas.
cd ~/tofu-lab/helloSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
cat main.tfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Plan: mirar antes de cambiar nada
tofu init prepara la carpeta. Un proyecto real descarga aquí sus proveedores; este no tiene ninguno que buscar, así que es inmediato. Después tofu plan compara el archivo con el estado y muestra lo que haría. Un + significa crear, y la última línea lo suma: Plan: 1 to add, 0 to change, 0 to destroy. Un plan no cambia nada.
tofu initSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
tofu planSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Apply: hacerlo y que quede anotado
tofu apply hace lo que el plan enumeró. Sin -auto-approve te pide que escribas yes antes; el laboratorio lo añade para que el botón lo haga por ti. Termina con Apply complete! Resources: 1 added, 0 changed, 0 destroyed. El recurso queda anotado en el estado. tofu state list muestra lo que contiene el estado.
tofu apply -auto-approveSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
tofu state listSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprueba
Consejo
¿Qué comando cambia algo y cuál solo dice lo que cambiaría? Respuesta: tofu apply cambia, tofu plan solo informa. ¿Qué dice el plan si lo repites enseguida? Respuesta: No changes. Your infrastructure matches the configuration., porque el estado ya contiene lo que describe el archivo. Pruébalo.
Un error frecuente
Advertencia
Mucha gente cree que OpenTofu mira el mundo real cada vez para saber qué hay. No es así: compara tus archivos con su estado, su propio registro. Lo que el estado dice que existe es lo que cree que existe, así que el estado vale tanto como la infraestructura que describe.
Cambiar un valor y leer el plan
El siguiente comando cambia "hello" por "goodbye" en el archivo con sed, un buscar y reemplazar. Luego tofu plan tiene que distinguir entre algo nuevo y algo modificado. Un ~ significa modificar en el sitio, el valor antiguo y el nuevo se muestran juntos, y la última línea dice Plan: 0 to add, 1 to change, 0 to destroy. Lees el plan antes de aplicar: ese es el hábito para el que existe esta herramienta.
sed -i 's/input = "hello"/input = "goodbye"/' main.tfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
tofu planSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El estado es un archivo, y sin él OpenTofu olvida
En esta carpeta el estado es un archivo normal, terraform.tfstate. Bórralo y OpenTofu pierde su registro. Entonces el plan dice 1 to add, para un recurso que ya ha creado, porque para él no existe nada. Con una nube real eso crearía una segunda copia de todo. Por eso los equipos reales guardan el estado en un lugar seguro y nunca lo editan a mano. Después, sudo tofulab reset hello deja esta carpeta como se entregó.
rm terraform.tfstateSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
tofu planSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprobación final
Consejo
Responde sin volver atrás. 1. ¿Qué cambia tofu plan? 2. ¿Qué anota el estado? 3. ¿Qué dice el plan si lo ejecutas por segunda vez después de un apply? 4. ¿Por qué esta máquina no puede crear un servidor real? Respuestas: nada; lo que OpenTofu ya ha construido; nada que hacer; no tiene proveedor, y un proveedor es lo que habla con una nube. Cuando estés listo, lee tu laboratorio: ejecuta cat ~/README.md en el terminal.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección que se trabaja en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia de cada alumno. Se trabaja en un laboratorio de VM: cada alumno tiene su propia máquina Ubuntu con OpenTofu instalado, y un botón Ejecutar escribe en su terminal y muestra lo que se imprimió. Hace falta una cuenta gratuita (la máquina descarga OpenTofu desde GitHub). Puntos clave: 1. Un plan muestra los cambios antes de hacerlos. 2. El estado es el registro de OpenTofu de lo que construyó. 3. El mismo archivo se puede aplicar de nuevo sin cambiar nada. Error frecuente: creer que OpenTofu mira el mundo real en lugar de su estado. El laboratorio usa solo el recurso integrado terraform_data, así que no se crea nada real; los proveedores reales necesitan una red que el laboratorio no tiene. Después de la lección, sudo tofulab reset hello deja la carpeta como estaba. El propio laboratorio tiene una comprobación que planifica y aplica el proyecto del alumno con valores propios. Copie la lección en su propio módulo para cambiarla, o construya una desde cero con el menú Laboratorio del constructor de lecciones.