OpenTofu-Lab: Infrastructure as Code mit Plan, Apply und State auf einer VM

Dieses Lab gibt jeder lernenden Person OpenTofu auf einer eigenen Ubuntu-Maschine. Infrastructure as Code heißt, in Dateien zu beschreiben, was existieren soll, und ein Werkzeug herausfinden zu lassen, wie man dorthin kommt: Es vergleicht die Dateien mit der Aufzeichnung dessen, was es schon gebaut hat, zeigt den Unterschied als Plan und ändert erst danach etwas. Die lernende Person schreibt ein kleines Projekt, liest Pläne, betrachtet den State und repariert ein kaputtes Projekt.

OpenTofu ist frei und kostenlos, eine Lizenz ist nicht nötig. Auf dem Computer der lernenden Person wird nichts installiert. Nur eine echte Cloud fehlt im Lab: Es sagt das selbst, und diese Seite auch.

Was die Lernenden lernen

Die Arbeitsgewohnheiten von Infrastructure as Code, in sechs Teilen. Ein erster Plan und ein erstes Apply und die State-Datei, die sie hinterlassen. Variablen und Ausgaben. Mehrere Exemplare einer Sache aus einer Beschreibung, mit count und mit for_each, und warum for_each die Namen behält. Einen Plan nach einer Änderung lesen und sagen, was erzeugt, geändert oder gelöscht wird, bevor etwas geschieht. Wofür der State da ist, gezeigt durch sein Löschen und den Plan, der alles neu erzeugen will. Und drei Fehler in einem Projekt finden, einen falschen Typ, eine fehlende Variable und einen Zyklus, mit tofu validate. Nebenbei tofu fmt, tofu console und Abhängigkeiten zwischen Ressourcen.

Was hier echt ist und was nicht

Echte Clouds und Dienste erreicht man über Provider, Plug-ins, die OpenTofu aus einer Registry herunterlädt. Die VM einer lernenden Person erreicht nur das Ubuntu-Archiv, PyPI, npm und GitHub; also lässt sich kein Provider herunterladen, und in diesem Lab wird nie etwas Echtes erzeugt. Was in OpenTofu eingebaut ist, braucht keinen Download: die Ressource terraform_data, die nur einen Wert speichert und zurückgibt. Mit ihr sind Variablen, Ausgaben, count, for_each, Abhängigkeiten, Plan, Apply, Destroy und der State alles echt. Ein Provider wie AWS oder Docker ändert nur, was ein Ressourcenblock herstellt. Die README zeigt einen als Text zum Lesen, und das Lab führt ihn nie aus.

Die drei Ordner

Im Home-Ordner liegen drei Ordner. hello funktioniert wie geliefert, für den ersten Plan und Apply, eine Variable und den State. campus ist das Projekt der lernenden Person, von Grund auf nach einer Liste in der README geschrieben: drei Variablen, Server mit for_each, Räume mit count, eine Zusammenfassung, die beide liest, und zwei Ausgaben. fix ist ein Projekt mit drei Fehlern, die zu finden und zu beheben sind.

Im Browser ausführen

VM-Labs werden als Lab-Aufgabe in einem Modul gesetzt, und das Beispiel steht auf der Seite des Labs. Die Maschine ist klein: eine CPU, 1 GB Arbeitsspeicher und 10 GB Festplatte. OpenTofu selbst braucht bei der Arbeit etwa 80 MB.

  1. Lab hinzufügen. Fügen Sie in einem Modul, das Sie unterrichten, eine Aufgabe hinzu und wählen Sie die Karte für das Ubuntu-VM-Lab. Die Seite zeigt statt einer Compose-Datei eine kurze Beschreibung der Maschine.
  2. Mit dem Beispiel beginnen. Die Seite bietet fertige Labs zum Einstieg an. Wählen Sie OpenTofu. Ein Beispiel ersetzt den Text, und Rückgängig holt Ihren zurück.
  3. Veröffentlichen und eigene Kopie starten. Veröffentlichen Sie und klicken Sie dann auf Starten. Beim ersten Start der VM installiert das Setup-Skript einige Werkzeuge aus dem Ubuntu-Archiv, lädt OpenTofu 1.13.2 aus seinem Release auf GitHub herunter, prüft die Datei gegen eine feste Prüfsumme und installiert sie, in ein bis zwei Minuten. Der Download braucht ein Konto: Die VM einer Besucherin oder eines Besuchers erreicht nur das Ubuntu-Archiv.
  4. Terminal öffnen. Öffnen Sie das Terminal und lesen Sie README.md im Home-Ordner: Sie sagt in sechs Teilen, was zu tun ist, und verrät keine Lösung.

Eine Basics-Lektion zu diesem Lab

OpenTofu Basics ist eine kleine Lektion, die in diesem Lab durchgeführt wird, einer Ubuntu-VM. Sie hat einen Einstieg, ein Ich-kann-Ziel, Schlüsselwörter, einen Start, eine Prüfung nach den Ideen, einen häufigen Fehler und einen Abschlusscheck, und jeder Schritt hat eine Schaltfläche Ausführen, die ihren Befehl ins Terminal der Maschine tippt. Die lernende Person liest ein Projekt, führt init und plan aus, wendet an und listet den State, ändert einen Wert und liest den Plan, löscht dann den State und sieht den Plan erzeugen wollen, was schon existiert.

Die Lektion schaut sich nur um und überlässt die eigene Aufgabe des Labs, das Projekt und das kaputte, der lernenden Person; sie verrät also keine Lösung.

Wie bewertet wird

Das Lab hat eine Prüfung. Sie kopiert die beiden Ordner der lernenden Person an einen neuen Ort, sodass deren eigener State nicht zählt, und weist Provider und Provisioner ab. Dann validiert sie und verlangt ordentlich formatierte Dateien (tofu fmt). Für das Projekt campus wählt sie eigene Werte für die Variablen, einen Namen, den niemand gesehen hat, und eigene Server und Räume, plant und wendet an. Der State muss für jeden Namen einen Server enthalten, jeden mit Site und Namen als Eingabe, die Räume ab eins nummeriert und eine Ausgabe summary, die eine Ressource liest, statt eingetippt zu sein, sowie die Namen. Eine Ressource ohne Eingabe fällt durch, ebenso eine Ausgabe, die den Variablen nicht folgt. Danach entfernt die Prüfung einen Server und fügt zwei hinzu, plant erneut und verlangt, dass nur dieser eine gelöscht und nur die zwei erzeugt werden. Sie wendet an, verlangt, dass nichts mehr zu ändern ist, und löscht alles. Zuletzt muss das kaputte Projekt validieren, sich anwenden lassen, seine Ressourcen behalten und seiner Variable folgen. Die erste Zeile der Ausgabe sagt, warum.

  1. Zuweisen. Weisen Sie das Lab wie jede Aufgabe zu, auf Wunsch mit Abgabetermin. Jede lernende Person bekommt eine eigene VM, die zwischen den Sitzungen erhalten bleibt.
  2. Prüfung ausführen. Klicken Sie in der Klassenliste in der Zeile einer lernenden Person auf Prüfung ausführen. Sie startet eine Kopie der gespeicherten Maschine, die nicht zurückgespeichert wird, führt das Prüfskript des Labs als root aus und zeigt, ob es bestanden wurde, was es ausgegeben hat und wann. Die lernende Person erfährt das Ergebnis nicht.
  3. Bewerten. Lesen Sie die erste Zeile der Ausgabe: Sie nennt, was nicht stimmt, etwa Server, die nicht zu den Variablen passen, eine Zusammenfassung, die die Server nicht liest, oder einen Plan, der nach dem Apply noch etwas ändern will. Geben Sie die Arbeit mit einer Begründung zurück, wenn mehr nötig ist.

Die Definition auf GitHub

Die Datei ist die ganze Lab-Definition, derselbe Text, den die Plattform ausführt: Größe, Setup-Skript, der Befehl tofulab, die drei Projekte, README und Prüfung. Kopieren Sie sie und ändern Sie Projekt, Variablen oder Fehler, um ein längeres Lab zu bauen.

Dieses Lab ausprobieren, und was es kostet

Mit einem kostenlosen persönlichen Konto können Sie die Grundlagenlektionen in diesem Lab durcharbeiten, mit genug kostenlosem Guthaben pro Monat für die meisten Lektionen und ohne Karte. Für eine Klasse sind die ersten 365 Tage für eine Schule kostenlos, für bis zu 50 Lernende; danach zahlt sie je lernender Person und Jahr, alle Labs inklusive und Lehrkräfte kostenlos.

Häufige Fragen

Braucht das OpenTofu-Lab eine Lizenz?
Nein. OpenTofu ist Open Source unter der Mozilla Public License 2.0, ein Projekt der Linux Foundation, das als Fork von Terraform begann. Das Lab nutzt OpenTofu und nie Terraform, dessen Lizenz nicht Open Source ist. Es wird beim Start der VM aus dem Release des Projekts heruntergeladen, und wir verteilen nichts davon.
Warum können die Lernenden keinen echten Server erzeugen?
Ein echter Server wird über einen Provider erzeugt, und Provider werden aus einer Registry geladen, die die VM einer lernenden Person nicht erreicht: Sie erreicht nur das Ubuntu-Archiv, PyPI, npm und GitHub. Das Lab lehrt also alles außer dem Provider, mit der einen Ressource, die OpenTofu eingebaut hat. Plan, Apply und State verhalten sich mit einer echten genauso, und genau darum lernt man sie hier.
Wer kann es ausführen?
Wer ein Konto hat, kostenlos oder in einer Einrichtung. Das Lab lädt OpenTofu beim ersten Start der VM von GitHub herunter, und die VM einer Besucherin oder eines Besuchers, die nur das Ubuntu-Archiv erreicht, kann das nicht. Schlägt ein Download fehl, versucht es sudo tofulab install erneut, und die Prüfung sagt, dass OpenTofu fehlt, statt aus einem anderen Grund zu scheitern.
Können die Lernenden etwas kaputt machen?
Nur ihre eigene Kopie. Nichts, was das Lab erzeugt, liegt außerhalb des State von OpenTofu, und die VM erreicht das Ubuntu-Archiv, PyPI, npm und GitHub und sonst nichts. Macht jemand einen Ordner kaputt, stellt sudo tofulab reset seine Dateien wieder her.
Wurde das Lab in einer echten Lernenden-VM getestet?
Das Setup, mit dem echten Download und seiner Prüfsumme, die Befehle der Lektion und die Prüfung wurden in einem echten Ubuntu 26.04 ausgeführt, in einem Container, der die VM ersetzt, ohne dass nach dem Download ein Netz nötig war. Eine wirklich gestartete Lernenden-VM hinter dem Proxy mit Positivliste der Plattform, den der Download von GitHub passieren muss, ist einen Versuch vor einer Unterrichtsstunde wert.