Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Grundlagen von OpenTofu

Die ganze Lektion steht hier zum Lesen. Erstellen Sie ein kostenloses Konto, um sie in einem Live-Lab auszuführen.

Ubuntu-VM-Lab12 Min. Lesezeit10 Befehle

Einmal sagen, jedes Mal bauen

Eine Schule will in jedem Klassenzimmer dieselben zehn Rechner, gleich eingerichtet. Von Hand, zehnmal, ergibt zehn leicht verschiedene Räume. Infrastructure as Code (Infrastruktur als Code) schreibt die Räume stattdessen in eine Datei: Ein Werkzeug baut, was die Datei beschreibt, so oft du willst, und zeigt dir vorher, was es ändern wird.

Am Ende dieser Lektion

Notiz

Ich kann sagen, was ein Plan ist, wofür der State da ist und warum ein Werkzeug plant, bevor es etwas ändert.

Schlüsselwörter

  • OpenTofu: ein freies, kostenloses Werkzeug, das Dateien liest und baut, was sie beschreiben.
  • Ressource: eine Sache, die eine Datei beschreibt. Hier speichert sie einen Wert; mit einem Provider könnte es ein Server sein.
  • Plan: die Liste der Änderungen, die OpenTofu vornehmen würde, gezeigt, bevor es sie vornimmt.
  • Apply (anwenden): die Änderungen ausführen, die der Plan aufgelistet hat.
  • State (Zustand): die Datei, in der OpenTofu festhält, was es schon gebaut hat.
  • Provider: ein Plug-in, das mit einer echten Cloud spricht. Diese Maschine kann keines herunterladen.

Zum Start: Was du schon weißt

Notiz

Antworte im Kopf. 1. Was ist eine Variable in einem Programm? 2. Wenn du zweimal eine Tasse Tee bestellst, bekommst du eine oder zwei? 3. Wozu dient eine To-do-Liste am nächsten Tag? Allen dreien begegnest du gleich.

Bevor du anfängst

Notiz

Klicke oben in der Leiste dieser Lektion auf Lab starten. Dieses Lab ist eine ganze Ubuntu-Maschine nur für dich und braucht deshalb etwas länger zum Starten als ein Container; beim ersten Mal lädt sie OpenTofu herunter, du brauchst also ein kostenloses Konto. Jede Schaltfläche Ausführen tippt ihren Befehl ins Terminal der Maschine, einen nach dem anderen in derselben Sitzung. Wenn eine meldet, dass die Maschine noch startet, warte ein paar Sekunden und klicke noch einmal. Um zuzusehen oder eigene Befehle zu tippen, klicke in der Leiste auf Terminal öffnen.

Ein Projekt ist ein Ordner mit Dateien

Das Lab gibt dir ein kleinstes Projekt in ~/tofu-lab/hello. cd führt dich dorthin. Die Datei main.tf enthält eine Ressource namens hello vom eingebauten Typ terraform_data. Sie speichert den Wert "hello" als input (Eingabe) und gibt ihn als output (Ausgabe) zurück. Ein zweiter Block gibt diese Ausgabe aus. Außerhalb von OpenTofu wird nichts erzeugt: Das Lab hat keine Cloud, in der etwas erzeugt werden könnte.

Befehl
cd ~/tofu-lab/hello

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
cat main.tf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Plan: erst ansehen, dann ändern

tofu init bereitet den Ordner vor. Ein echtes Projekt lädt hier seine Provider herunter; dieses hat keinen zu holen und ist daher sofort fertig. tofu plan vergleicht dann die Datei mit dem State und gibt aus, was es tun würde. Ein + heißt erzeugen, und die letzte Zeile rechnet es zusammen: Plan: 1 to add, 0 to change, 0 to destroy. Ein Plan ändert nichts.

Befehl
tofu init

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
tofu plan

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Apply: ausführen und merken lassen

tofu apply führt aus, was der Plan aufgelistet hat. Ohne -auto-approve fragt es dich vorher, ob du yes eingibst; das Lab setzt es dazu, damit die Schaltfläche es für dich erledigt. Am Ende steht Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Die Ressource ist jetzt im State festgehalten. tofu state list zeigt, was der State enthält.

Befehl
tofu apply -auto-approve

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
tofu state list

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Prüfe dich

Tipp

Welcher Befehl ändert etwas, und welcher sagt nur, was er ändern würde? Antwort: tofu apply ändert, tofu plan informiert nur. Was sagt der Plan, wenn du ihn gleich noch einmal ausführst? Antwort: No changes. Your infrastructure matches the configuration., weil der State schon enthält, was die Datei beschreibt. Probiere es aus.

Ein häufiger Fehler

Warnung

Viele denken, OpenTofu schaue jedes Mal in die echte Welt und finde heraus, was dort ist. Das tut es nicht: Es vergleicht deine Dateien mit seinem State, seiner eigenen Aufzeichnung. Was der State als vorhanden meldet, hält es für vorhanden; der State ist also so viel wert wie die Infrastruktur, die er beschreibt.

Einen Wert ändern und den Plan lesen

Der nächste Befehl ersetzt in der Datei mit sed, einem Suchen-und-Ersetzen, "hello" durch "goodbye". Dann muss tofu plan zwischen etwas Neuem und etwas Geändertem unterscheiden. Ein ~ heißt an Ort und Stelle ändern, der alte und der neue Wert stehen nebeneinander, und die letzte Zeile lautet Plan: 0 to add, 1 to change, 0 to destroy. Du liest den Plan, bevor du anwendest: Dafür gibt es dieses Werkzeug.

Befehl
sed -i 's/input = "hello"/input = "goodbye"/' main.tf

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
tofu plan

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Der State ist eine Datei, und ohne ihn vergisst OpenTofu alles

In diesem Ordner ist der State eine gewöhnliche Datei, terraform.tfstate. Lösche sie, und OpenTofu hat seine Aufzeichnung verloren. Der Plan sagt dann 1 to add, für eine Ressource, die es schon erzeugt hat, denn für OpenTofu existiert nichts. Bei einer echten Cloud entstünde damit von allem eine zweite Kopie. Darum bewahren echte Teams den State sicher auf und bearbeiten ihn nie von Hand. Danach stellt sudo tofulab reset hello diesen Ordner so wieder her, wie er ausgegeben wurde.

Befehl
rm terraform.tfstate

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Befehl
tofu plan

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Abschlusscheck

Tipp

Antworte, ohne zurückzuschauen. 1. Was ändert tofu plan? 2. Was hält der State fest? 3. Was sagt der Plan, wenn du ihn nach einem Apply ein zweites Mal ausführst? 4. Warum kann diese Maschine keinen echten Server erzeugen? Antworten: nichts; was OpenTofu schon gebaut hat; nichts zu tun; sie hat keinen Provider, und ein Provider ist es, der mit einer Cloud spricht. Wenn du bereit bist, lies dein Lab: Führe cat ~/README.md im Terminal aus.

Für Lehrkräfte

Tipp

Diese Lektion ist ein kleines Beispiel für eine Lektion, die in einem Lab durchgeführt wird: Die Schritte und die Schaltflächen Ausführen sind die Lektion, und das Lab ist die Kopie jeder lernenden Person. Sie läuft in einem VM-Lab: Jede lernende Person hat eine eigene Ubuntu-Maschine mit installiertem OpenTofu, und eine Schaltfläche Ausführen tippt in ihr Terminal und zeigt, was ausgegeben wurde. Es braucht ein kostenloses Konto (die Maschine lädt OpenTofu von GitHub herunter). Wichtige Lernpunkte: 1. Ein Plan zeigt Änderungen, bevor etwas geändert wird. 2. Der State ist die Aufzeichnung von OpenTofu darüber, was es gebaut hat. 3. Dieselbe Datei lässt sich erneut anwenden und ändert nichts. Häufiger Fehler: glauben, OpenTofu schaue in die echte Welt statt in seinen State. Das Lab nutzt nur die eingebaute Ressource terraform_data, es wird also nichts Echtes erzeugt; echte Provider brauchen ein Netz, das das Lab nicht hat. Nach der Lektion stellt sudo tofulab reset hello den Ordner wieder her. Das Lab selbst hat eine Prüfung, die das Projekt der lernenden Person mit eigenen Werten plant und anwendet. Kopieren Sie die Lektion in Ihr eigenes Modul und ändern Sie sie, oder bauen Sie mit dem Menü Lab im Lektions-Editor eine neue von Grund auf.

Über dieses Lab und seinen Quellcode: OpenTofu-Lab: Infrastructure as Code mit Plan, Apply und State auf einer VM

Sie unterrichten eine Klasse? Weisen Sie diese Lektionen Ihren Lernenden zu, mit Bewertung und einem Lab für jede lernende Person.