Blog

Erste Schritte mit Terraform: Terraform Tutorial für Einsteiger

Bild von Daniel Dimitrov
Daniel Dimitrov
DevOps- und Cloud-Ingenieur
26.05.2022
Lesezeit: 4 Minuten.
Zuletzt aktualisiert: 16.01.2025

Inhaltsübersicht

Was ist Terraform? Was ist Infrastrukturbereitstellung? Definition von Infrastruktur als Code

Infrastructure as Code (IaC) ist das Konzept der Verwaltung und Bereitstellung Ihrer IT-Infrastruktur mithilfe von Konfigurationsdateien. Terraform ist ein Infrastructure-as-Code-Software-Tool, mit dem Sie Ihre Infrastruktur sicher und vorhersehbar aufbauen, ändern und verbessern können.

Die Bereitstellung der Infrastruktur ist der Prozess der Einrichtung Ihrer IT-Infrastruktur. Sie bezieht sich auch auf die Schritte, die erforderlich sind, um den Zugang zu Daten und Ressourcen zu verwalten und sie für Benutzer und Systeme verfügbar zu machen. 

Terraform ist ein von HashiCorp entwickeltes Open-Source-Orchestrierungstool, das mit der Programmiersprache Go erstellt wurde. Die Go-Sprache wird in eine Binärdatei namens "Terraform" kompiliert, die Anfragen an die Anwendungsprogrammierschnittstelle (API) des Cloud-Anbieters stellt. Terraform stellt diese Anfragen auf der Grundlage von vom Benutzer geschriebenen Infrastrukturvorlagen. Bei diesen Vorlagen handelt es sich um Textdateien, die ähnlich wie Programmcode geschrieben sind und die gewünschte Infrastruktur beschreiben, die erstellt werden soll.

Wofür wird Terraform verwendet? Terraform Basic Use Cases

Wie bereits erwähnt, ist Terraform ein Orchestrierungstool, das für Infrastructure as Code (IaC) verwendet wird. Es sorgt dafür, dass Konfigurationsdateien einer leicht zu lesenden Dokumentation ähneln, die On-Prem- und Cloud-Ressourcen beschreibt. Mit den unten beschriebenen Befehlen setzt Terraform diese Ressourcen um und schafft so die von uns gewünschte Infrastruktur.

Die folgende Abbildung zeigt, wie Sie Google Cloud Platform als Cloud-Anbieter konfigurieren und einen privaten Schlüssel implementieren. Dies erfordert Parameter für das GCP-Projekt, die Projektregion und -zone sowie eine GCP-Authentifizierungsdatei.

GCP-Authentifizierungsdatei

Sobald wir die Zone und den Provider definiert haben, können wir zu allem anderen übergehen, was unsere Infrastruktur benötigt: Instanzen, Load Balancer, automatische Skalierung, Sicherheitsgruppen usw. Hier ist ein einfaches Beispiel für die Definition eines Kubernetes-Clusters auf der Google Kubernetes Engine (GKE) mit Terraform.

Kubernetes Cluster auf Google Kubernetes Engine (GKE) mit Terraform

Terraform Architektur & Grundlegende Befehle

Sobald die Vorlagen vorbereitet sind, können sie mit dem Befehl "terraform apply" angewendet werden, wodurch die gewünschte Infrastruktur erstellt wird. Wenn Sie diesen Befehl eingeben, übersetzt die Terraform-Binärdatei den Terraform-Code in eine Reihe von API-Anfragen an den Anbieter, der die Infrastruktur erstellt. In ähnlicher Weise wird der Befehl "terraform destroy" verwendet, um die bestehende Infrastruktur zu zerstören. Ein weiterer nützlicher Befehl ist "terraform plan", der einen Implementierungsplan erstellt, der festlegt, welche Maßnahmen ergriffen werden müssen, um die in den Vorlagen beschriebene Infrastruktur zu erreichen. Dieser Plan basiert auf den von Terraform verwendeten Vorlagen und Infrastruktur-Statusdateien.

Terraform speichert die Definition der bereits existierenden Infrastruktur in der sogenannten Terraform-Zustandsdatei. Diese Datei wird von Terraform verwendet, um die reale Infrastruktur mit Vorlagen zu korrelieren, Ressourcenverbindungen zu erhalten und die Produktivität beim Aufbau einer großen Infrastruktur zu verbessern. Die Zustandsdatei liegt im JSON-Format (JavaScript Object Notation) vor und wird standardmäßig lokal gespeichert, was für die individuelle Arbeit eine gute Option ist, aber nicht für die Teamarbeit. Wenn mehrere Personen an Terraform-Vorlagen arbeiten, gibt es Probleme beim Speichern der Statusdatei.

Da Terraform-Vorlagen in Form von Programmcode geschrieben werden, bedeutet dies, dass sie in einem Versionskontrollsystem gespeichert werden können, was es mehreren Entwicklern ermöglicht, daran zu arbeiten. Das Problem tritt beim Speichern und Arbeiten mit der Statusdatei auf. Da sie standardmäßig lokal gespeichert wird, bedeutet dies, dass bei der Verwendung eines Versionskontrollsystems die Zustandsdatei auch in diesem System gespeichert werden muss. Dies ist problematisch, weil es bedeutet, dass jeder Projektbeteiligte für einen ordnungsgemäßen Betrieb sicherstellen muss, dass er jedes Mal mit der neuesten Version der Statusdatei arbeitet. Diese Option ist zwar unbequem, würde aber funktionieren. Wenn die Zustandsdatei jedoch in einem gemeinsamen Speicher abgelegt wird, ergibt sich ein neues Problem - das Fehlen der so genannten "Sperre". Die Sperre verbietet die gleichzeitige Ausführung von Terraform-Operationen, die mit der Statusdatei arbeiten. Dies ist sinnvoll, da das gleichzeitige Schreiben in eine gemeinsam genutzte Statusdatei zu Konflikten, Datenverlust, Dateikorruption und Inkonsistenzen zwischen Vorlagen und Infrastruktur in der Statusdatei führen kann. Außerdem ist die Speicherung der Statusdatei in einem Versionskontrollsystem unerwünscht, da alle Daten in der Datei als unverschlüsselter Text gespeichert werden.

Bewährte Praktiken

Die gute Praxis für die Speicherung der Statusdatei besteht darin, sie über das so genannte Backend aus der Ferne zu speichern. Dieses Terraform-Backend bestimmt das Laden und Speichern von Daten in Terraform. Standardmäßig wird ein lokales Backend verwendet, um Daten auf der lokalen Festplatte zu speichern. Es ist möglich, ein Remote-Backend zu verwenden, über das Terraform Daten über den Zustand der Infrastruktur an einem entfernten Ort speichert, wodurch alle Probleme gelöst werden, die bei der Verwendung eines Versionskontrollsystems auftreten. 

Es gibt auch einige gute Praktiken beim Schreiben des Codes zur Definition unserer Infrastruktur. Das erste Beispiel, das wir gegeben haben, ist eigentlich nicht die beste Praxis beim Schreiben von Terraform-Dateien. Wir empfehlen, verschiedene Terraform-Dateien zu verwenden, um den Code lesbarer und weniger komplex zu machen und ihn bei Bedarf leicht zu ändern. Sie können sich hier ein Beispiel für Infrastrukturdateien ansehen:

teraform

Wie Sie sehen können, gibt es Dateien wie Versionen, Ausgaben und Variablen. In den Variablendateien werden alle Variablen gespeichert, die für die Infrastruktur benötigt werden. Das ist eine wirklich gute Praxis, um Informationen zu speichern, denn - noch einmal - sie sind leicht zu lesen und später zu ändern. Wenn wir also das erste Beispiel der Definition des Google-Anbieters nehmen und es in zwei Dateien aufteilen, sieht die Variable wie folgt aus:

Google-Anbieter und teilen Sie sie in zwei Dateien auf, dann sieht die Variable wie folgt aus

Genauso verhält es sich mit Versionen und Ausgaben. Sie können Versionen und Versionsanforderungen in der Versionsdatei und Ausgaben in der Ausgabedatei speichern. Sie können zwar alles in der Hauptdatei speichern, aber das ist keine gute Praxis.

Weitere ausführliche Tutorials und Praktiken zu Terraform finden Sie hier.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Bei der Arbeit mit Terraform sollte das Standard-Meta-Argument zum Erstellen von Ressourcen fast immer „for_each“ lauten – insbesondere bei Infrastruktur, die voraussichtlich lange bestehen bleibt und sich weiterentwickelt...
Lesen
Die sichere Verwaltung von Geheimnissen in Kubernetes stellt eine entscheidende Herausforderung für moderne Cloud-native Umgebungen dar. Anmeldedaten für Anwendungen, Zertifikate, private Schlüssel und Passwörter müssen auf sichere und nachverfolgbare Weise verwaltet werden, ...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.