Einführung
Willkommen in der Welt von Infrastructure as Code (IaC).
Stellen Sie sich vor, Sie sind Chefkoch in einem stark frequentierten Restaurant. Traditionell würden Sie jedes Gericht Schritt für Schritt von Hand zubereiten. In der IT entspricht das der manuellen Konfiguration von Servern nacheinander – sie ist langsam und fehleranfällig.
Anstatt die Infrastruktur manuell durch wiederholte Befehle oder Klicks in einer Cloud-Konsole zu konfigurieren, können Sie mit IaC die Infrastruktur in Dateien beschreiben. Diese Dateien lassen sich versionieren, überprüfen und wiederverwenden.
Terraform ist eines der am häufigsten verwendeten IaC-Tools. Es arbeitet deklarativ: Sie beschreiben den gewünschten Endzustand, und Terraform ermittelt, wie dieser erreicht wird.
Dieses deklarative Modell ist eine der grundlegenden Ideen hinter Terraform. Sie beschreiben, welche Infrastruktur vorhanden sein soll, nicht das vollständige imperative Skript für jeden einzelnen notwendigen Schritt auf niedriger Ebene.
In diesem Lab richten Sie Ihre „Küche“ ein und bringen Ihrem Roboter seine erste Fähigkeit bei. Sie lernen Provider kennen. Diese sind wie spezielle Kochwerkzeuge, mit denen der Roboter auf verschiedene Zutaten wie AWS, Google Cloud oder Docker zugreifen kann.
Am Ende dieses Labs haben Sie Terraform installiert, Ihre erste „Rezeptdatei“ erstellt und die Umgebung für den Beginn der Infrastrukturentwicklung vorbereitet.
Terraform installieren
Wir müssen das Programm terraform installieren. Stellen Sie sich vor, Sie laden damit das Gehirn des Roboters herunter. Wir führen diesen Vorgang manuell durch, damit Sie genau sehen, woher das Programm stammt und wo es gespeichert wird.
Überprüfen Sie zunächst, in welchem Verzeichnis Sie gerade arbeiten. Sie sollten sich im Projektverzeichnis befinden.
pwd
Laden Sie anschließend das Terraform-Paket aus dem Internet herunter. Mit dem Befehl wget rufen Sie eine bestimmte Version (1.14.3) ab. So stellen wir sicher, dass im Lab alle Schritte wie vorgesehen funktionieren.
wget https://releases.hashicorp.com/terraform/1.14.3/terraform_1.14.3_linux_amd64.zip
Bei der heruntergeladenen Datei handelt es sich um ein komprimiertes „zip“-Archiv – ähnlich wie ein Koffer, in dem sich unser Werkzeug befindet. Öffnen Sie es mit dem Befehl unzip.
unzip terraform_1.14.3_linux_amd64.zip
Nun befindet sich das Programm terraform in diesem Verzeichnis. Derzeit können Sie es jedoch nur von hier aus starten. Wir möchten es im gesamten System ausführen können, genau wie Standardbefehle wie ls oder cd.
Verschieben Sie es dazu in das spezielle Systemverzeichnis /usr/local/bin. Dieses Verzeichnis ist wie eine öffentliche Werkzeugkiste, die das System immer durchsucht, wenn Sie einen Befehl eingeben.
sudo mv terraform /usr/local/bin/
Überprüfen Sie abschließend die Installation, indem Sie die Version anzeigen.
terraform -version
Die Ausgabe sollte auf Terraform v1.14.3 hinweisen.
Löschen Sie die heruntergeladene ZIP-Datei, damit Ihr Arbeitsbereich übersichtlich bleibt:
rm terraform_1.14.3_linux_amd64.zip
Das Blueprint erstellen
Terraform benötigt ein Blueprint, um zu wissen, was erstellt werden soll. Diese Blueprints werden in Textdateien mit der Dateiendung .tf geschrieben.
In diesem Schritt erstellen Sie die zentrale Konfigurationsdatei. Üblicherweise heißt die primäre Datei main.tf. Stellen Sie sie sich als Hauptseite Ihres Rezeptbuchs vor.
Erstellen Sie im Verzeichnis ~/project eine neue Datei mit dem Namen main.tf. Mit dem Befehl touch können Sie zunächst eine leere Datei erstellen.
touch main.tf
Überprüfen Sie, ob die Datei erstellt wurde:
ls -l main.tf
Zu diesem Zeitpunkt ist die Datei leer. Im nächsten Schritt fügen wir ihren Inhalt hinzu. Die Datei dient als Blueprint für Ihre Infrastruktur.
Einen Provider konfigurieren
Nachdem die Datei main.tf nun vorhanden ist, müssen wir Anweisungen in die Datei einfügen.
Terraform ist ein universell einsetzbares Tool. Standardmäßig weiß es nicht, wie es mit Docker, AWS oder Azure kommunizieren soll. Deshalb benötigen wir einen Provider, der als Übersetzer fungiert. Er bringt Terraform die spezifische Sprache der Plattform bei, die wir verwalten möchten. In unserem Fall möchten wir Docker-Container verwalten und benötigen daher den Docker-Provider.
Diese Trennung zwischen der zentralen Engine und den Provider-Plugins ermöglicht es, mit demselben Terraform-Arbeitsablauf viele verschiedene Infrastruktursysteme zu verwalten.
Öffnen Sie main.tf mit dem Texteditor nano.
nano main.tf
Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein. Der erste Teil, der terraform-Block, gibt Terraform genau an, welches Übersetzer-Plugin heruntergeladen werden soll. Der zweite Teil, der provider-Block, aktiviert dieses Plugin.
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.1"
}
}
}
provider "docker" {}
Speichern Sie Ihre Änderungen nach dem Einfügen des Codes und schließen Sie den Editor. Drücken Sie Ctrl + O, um die Datei zu schreiben, bestätigen Sie den Dateinamen mit Enter und drücken Sie anschließend Ctrl + X, um den Editor zu schließen.
Diese Konfiguration teilt Terraform mit: „Ich möchte den Docker-Provider verwenden, und zwar Version 3.0.1 oder eine kompatible Version.“
Das Projekt initialisieren
Sie haben das Tool installiert und das Blueprint geschrieben. Terraform ist jedoch noch nicht vollständig bereit. In Ihrer Datei main.tf hat es erkannt, dass der „Docker“-Übersetzer (das Plugin) benötigt wird. Heruntergeladen wurde er bisher aber noch nicht.
Führen Sie den Befehl init aus. Stellen Sie sich diesen Schritt als „Vorbereiten der Werkstatt“ vor. Terraform liest Ihr Blueprint, erkennt die fehlenden Werkzeuge und lädt sie automatisch in ein verstecktes Verzeichnis herunter.
terraform init ist daher ein Bootstrap-Schritt für das Projekt und kein Schritt zum Ändern der Infrastruktur. Der Befehl bereitet das Arbeitsverzeichnis vor, damit spätere Befehle die Konfiguration korrekt verstehen können.
Führen Sie den Initialisierungsbefehl aus:
terraform init
Die Ausgabe sollte ungefähr so aussehen:
Initializing the backend...
Initializing provider plugins...
- Finding kreuzwerker/docker versions matching "~> 3.0.1"...
- Installing kreuzwerker/docker v3.0.2...
- Installed kreuzwerker/docker v3.0.2 (self-signed, key ID 24E54F214539BC63)
Terraform has been successfully initialized!
Dieser Befehl hat in Ihrem Projektverzeichnis ein verstecktes Verzeichnis mit dem Namen .terraform erstellt. Dort speichert Terraform die heruntergeladenen Provider-Plugins.
Überprüfen Sie, ob dieses Verzeichnis vorhanden ist, indem Sie alle Dateien einschließlich der versteckten Dateien auflisten:
ls -a
Die Ausgabe sollte .terraform und .terraform.lock.hcl enthalten. Die Lock-Datei stellt sicher, dass bei zukünftigen Ausführungen genau dieselben Provider-Versionen verwendet werden. Dadurch bleibt die Umgebung konsistent.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben Ihre Terraform-Umgebung erfolgreich eingerichtet.
In diesem Lab haben Sie Folgendes gelernt:
- Installation: Wie Sie die Terraform-Binärdatei im Systempfad (
/usr/local/bin) ablegen. - Konfiguration: Wie Sie eine Datei
main.tferstellen, die als Blueprint für Ihre Infrastruktur dient. - Provider: Spezielle „Übersetzer“, über die Terraform mit verschiedenen Plattformen wie Docker kommunizieren kann.
- Initialisierung: Wie Sie mit
terraform initdie erforderlichen Plugins herunterladen, bevor Sie mit der Arbeit beginnen.
Sie können nun im nächsten Lab konkrete Ressourcen definieren und Infrastruktur erstellen.



