Einführung
Terraform ist ein Open-Source-Tool für Infrastructure as Code (IaC), das von HashiCorp entwickelt wurde. Es ermöglicht Ihnen, die Infrastruktur eines Rechenzentrums mithilfe einer deklarativen Konfigurationssprache zu definieren und bereitzustellen. Das bedeutet, dass Sie Ihre gewünschte Infrastruktur in Konfigurationsdateien beschreiben, und Terraform ermittelt, wie Ressourcen erstellt, aktualisiert oder gelöscht werden müssen, um diesen Zustand zu erreichen.
Der grundlegende Terraform-Workflow besteht aus drei Hauptphasen:
- Write (Schreiben): Infrastruktur als Code verfassen.
- Plan (Planen): Änderungen vor der Anwendung in einer Vorschau prüfen.
- Apply (Anwenden): Infrastruktur bereitstellen und verwalten.
In diesem Lab durchlaufen Sie diesen gesamten Workflow, indem Sie eine sehr einfache Ressource erstellen: eine lokale Datei. Die Verwendung des local-Providers ist eine hervorragende Möglichkeit, die Mechanismen von Terraform zu erlernen, ohne Anmeldedaten für einen Cloud-Anbieter zu benötigen. Sie werden eine Datei definieren, ihre Erstellung planen, die Änderungen anwenden und das Ergebnis überprüfen.
Definieren einer local_file-Ressource in main.tf
In diesem Schritt beginnen Sie damit, eine Ressource in Ihrer Terraform-Konfigurationsdatei zu definieren. Alle Terraform-Konfigurationen werden in Dateien mit der Endung .tf geschrieben. Die Hauptkonfigurationsdatei wird üblicherweise main.tf genannt.
Ein resource-Block ist die primäre Syntax für die Deklaration eines Infrastrukturobjekts. Er definiert eine Ressource eines bestimmten Typs (z. B. local_file) mit einem bestimmten lokalen Namen (z. B. example). Die Kombination aus Typ und Name muss innerhalb eines Moduls eindeutig sein.
Öffnen Sie zunächst die Datei main.tf in Ihrem Verzeichnis ~/project mit dem Texteditor nano.
nano main.tf
Fügen Sie nun den folgenden Code in die Datei ein. Dies definiert eine Ressource vom Typ local_file und gibt ihr den lokalen Namen example. Vorerst bleibt der Ressourcenblock leer.
resource "local_file" "example" {
}
Nachdem Sie den Code hinzugefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und schließlich Enter drücken.
Dateiname und Inhalt im Ressourcenblock angeben
In diesem Schritt fügen Sie dem Ressourcenblock Argumente hinzu, um die Eigenschaften der Datei festzulegen, die Sie erstellen möchten. Argumente sind die Schlüssel-Wert-Paare innerhalb eines Ressourcenblocks, die dessen Konfiguration definieren. Für eine local_file-Ressource sind die beiden wichtigsten Argumente filename und content.
filename: Der Pfad zu der Datei, die erstellt werden soll.content: Der Inhalt, der in die Datei geschrieben werden soll.
Öffnen Sie die Datei main.tf erneut mit nano.
nano main.tf
Ändern Sie den local_file-Ressourcenblock so, dass er die Argumente filename und content wie unten gezeigt enthält.
resource "local_file" "example" {
content = "Hello, Terraform!"
filename = "${path.module}/hello.txt"
}
Hier weisen wir Terraform an, eine Datei namens hello.txt im aktuellen Projektverzeichnis zu erstellen. ${path.module} ist ein spezieller Terraform-Ausdruck, der sich zum Pfad des aktuellen Moduls auflöst, was in diesem Fall ~/project ist. Der Inhalt der Datei wird die Zeichenfolge "Hello, Terraform!" sein.
Speichern Sie die Datei und beenden Sie nano mit Ctrl+X, Y und Enter.
Terraform initialisieren und Änderungen in der Vorschau anzeigen
In diesem Schritt initialisieren Sie zunächst Ihr Terraform-Projekt und führen dann den Befehl terraform plan aus, um einen Ausführungsplan zu erstellen.
Bevor Sie Änderungen planen können, müssen Sie das Projekt initialisieren. Der Befehl terraform init scannt Ihre Konfiguration, lädt die erforderlichen Provider herunter (in diesem Fall für local_file) und richtet das Backend ein.
Führen Sie in Ihrem Terminal zunächst terraform init aus:
terraform init
Nachdem die Initialisierung erfolgreich war, führen Sie terraform plan aus. Dieser Befehl ist ein entscheidender Teil des Terraform-Workflows, da er einen "Trockenlauf" der Änderungen durchführt. Er zeigt Ihnen, was Terraform mit Ihrer Infrastruktur tun wird, ohne tatsächlich Änderungen vorzunehmen. Dies ermöglicht es Ihnen, die beabsichtigten Aktionen zu überprüfen und zu verifizieren, bevor sie angewendet werden.
terraform plan
Terraform liest Ihre Konfigurationsdatei und vergleicht sie mit dem aktuellen Zustand Ihrer Infrastruktur (der derzeit leer ist). Anschließend wird ein Aktionsplan angezeigt. Sie sollten eine Ausgabe sehen, die der folgenden ähnelt und darauf hinweist, dass eine Ressource erstellt werden soll.
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
## local_file.example will be created
+ resource "local_file" "example" {
+ content = "Hello, Terraform!"
+ content_base64sha256 = (known after apply)
+ content_base64sha512 = (known after apply)
+ content_md5 = (known after apply)
+ content_sha1 = (known after apply)
+ content_sha256 = (known after apply)
+ content_sha512 = (known after apply)
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "./hello.txt"
+ id = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
Das Symbol + neben resource "local_file" "example" bedeutet, dass diese Ressource erstellt wird. Die Ausgabe listet alle Attribute auf, die für die neue Datei festgelegt werden.
terraform apply ausführen, um die Ressource zu erstellen
In diesem Schritt wenden Sie die Änderungen mit dem Befehl terraform apply an, um die Datei tatsächlich zu erstellen. Dieser Befehl führt die Aktionen aus, die in der Ausgabe von terraform plan vorgeschlagen wurden.
Standardmäßig zeigt Ihnen terraform apply den Plan erneut an und bittet vor dem Fortfahren um eine interaktive Bestätigung. Um den Vorgang nicht-interaktiv zu gestalten, was für Labs und Automatisierung nützlich ist, können Sie das Flag -auto-approve verwenden.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
terraform apply -auto-approve
Terraform führt nun den Plan aus. Die Ausgabe zeigt zunächst erneut den Plan, gefolgt vom Fortschritt der Anwendung. Sobald der Vorgang abgeschlossen ist, sehen Sie eine Bestätigungsmeldung.
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
## local_file.example will be created
+ resource "local_file" "example" {
+ content = "Hello, Terraform!"
+ content_base64sha256 = (known after apply)
+ content_base64sha512 = (known after apply)
+ content_md5 = (known after apply)
+ content_sha1 = (known after apply)
+ content_sha256 = (known after apply)
+ content_sha512 = (known after apply)
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "./hello.txt"
+ id = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=42086c02e03bf671ddf621ed9922f52f2c7a605c]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Die Meldung "Apply complete!" bestätigt, dass Terraform die Ressource wie in Ihrer Konfiguration definiert erfolgreich erstellt hat.
Überprüfen, ob die erstellte Datei im Dateisystem vorhanden ist
In diesem letzten Schritt überprüfen Sie, ob Terraform die Datei wie angegeben erfolgreich auf Ihrem lokalen Dateisystem erstellt hat. Da Sie die local_file-Ressource verwendet haben, ist das Ergebnis eine physische Datei in Ihrem Projektverzeichnis.
Verwenden Sie zunächst den Befehl ls, um die Dateien im aktuellen Verzeichnis aufzulisten. Sie sollten nun hello.txt neben Ihrer Terraform-Konfigurationsdatei sehen.
ls
Erwartete Ausgabe:
hello.txt main.tf terraform.tfstate
Verwenden Sie anschließend den Befehl cat, um den Inhalt der neu erstellten Datei hello.txt anzuzeigen.
cat hello.txt
Sie sollten den Inhalt sehen, den Sie in main.tf definiert haben.
Hello, Terraform!
Dies bestätigt, dass Ihre Terraform-Konfiguration erfolgreich angewendet wurde und die Ressource genau so erstellt wurde, wie Sie es in Ihrem Code definiert haben.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben Ihr erstes Terraform-Projekt erfolgreich abgeschlossen.
In diesem Lab haben Sie den grundlegenden Workflow von Terraform kennengelernt:
- Write (Schreiben): Sie haben eine
local_file-Ressource in einermain.tf-Konfigurationsdatei definiert. - Plan (Planen): Sie haben
terraform planverwendet, um die Erstellung der Datei in einer Vorschau zu sehen, ohne Änderungen vorzunehmen. - Apply (Anwenden): Sie haben
terraform applyverwendet, um den Plan auszuführen und die Datei auf Ihrem lokalen Dateisystem zu erstellen.
Dieses einfache Beispiel der Erstellung einer lokalen Datei demonstriert die grundlegende Stärke von Infrastructure as Code. Sie haben den gewünschten Zustand einer Ressource in einer Konfigurationsdatei deklariert, und Terraform hat die Logik übernommen, um diesen Zustand zu erreichen. Dieselben Prinzipien gelten bei der Verwaltung komplexerer Infrastrukturen, wie z. B. virtuellen Maschinen, Netzwerken und Datenbanken in der Cloud.



