Einführung
Willkommen zu diesem Lab über die Zerstörung von Terraform-Ressourcen. Ein wesentlicher Bestandteil des Infrastruktur-Lebenszyklus ist nicht nur das Erstellen und Aktualisieren von Ressourcen, sondern auch deren sauberes Entfernen, wenn sie nicht mehr benötigt werden. Dieser Prozess wird als Zerstörung (Destruction) bezeichnet.
Terraform bietet einen unkomplizierten und sicheren Workflow für die Zerstörung von Infrastruktur. Der primäre Befehl hierfür ist terraform destroy. Um versehentliches Löschen zu verhindern, bietet Terraform auch eine Möglichkeit, eine Vorschau dessen anzuzeigen, was zerstört wird, bevor Sie die Aktion bestätigen.
In diesem Lab lernen Sie, wie Sie:
terraform plan -destroyverwenden, um einen Zerstörungsplan in der Vorschau anzuzeigen.- Die Ausgabe des Zerstörungsplans interpretieren.
- Den Befehl
terraform destroyausführen, um Ressourcen zu entfernen. - Überprüfen, ob die Ressourcen sowohl aus dem System als auch aus der Terraform-Zustandsdatei (State File) erfolgreich entfernt wurden.
Wir werden mit einer einfachen local_file-Ressource arbeiten, damit wir uns auf den Terraform-Workflow konzentrieren können, ohne Anmeldeinformationen für Cloud-Anbieter zu benötigen.
Aktuellen Projektstatus bestätigen
Bevor wir mit dem Zerstörungsprozess beginnen, überprüfen wir zunächst den aktuellen Zustand unseres Terraform-Projekts. Dies hilft Ihnen zu verstehen, welche Ressourcen derzeit von Terraform verwaltet werden.
Führen Sie die folgenden Befehle aus, um den aktuellen Projektstatus zu überprüfen:
Zuerst listen wir die Dateien im Projektverzeichnis auf:
ls -la
Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:
total 20
drwxr-xr-x 1 labex labex 110 Oct 15 13:10 .
drwxr-x--- 1 labex labex 4096 Oct 15 13:10 ..
drwxr-xr-x 3 labex labex 23 Oct 15 13:07 .terraform
-rw-r--r-- 1 labex labex 1181 Oct 15 13:07 .terraform.lock.hcl
-rwxrwxr-x 1 labex labex 45 Oct 15 13:10 example.txt
-rw-rw-r-- 1 labex labex 258 Oct 15 13:10 main.tf
-rw-rw-r-- 1 labex labex 1088 Oct 15 13:10 terraform.tfstate
Dies zeigt die Datei main.tf und die Datei terraform.tfstate, die durch das Setup-Skript erstellt wurden, zusammen mit der Datei example.txt, die erstellt wurde, als die Terraform-Konfiguration angewendet wurde.
Als Nächstes überprüfen wir den aktuellen Terraform-Zustand (State):
terraform show
Sie sollten eine Ausgabe sehen, die der folgenden ähnelt:
## local_file.example:
resource "local_file" "example" {
content = "This is an example file managed by Terraform."
directory_permission = "0777"
file_permission = "0777"
filename = "./example.txt"
id = "ec3adcab998872def2df6200fb03992ac6f237a4"
}
Dies zeigt Informationen über die Ressource local_file.example, die derzeit von Terraform verwaltet wird.
Führen Sie terraform plan -destroy zur Vorschau aus
In diesem Schritt lernen Sie, wie Sie einen spekulativen Zerstörungsplan (Destruction Plan) erstellen. Bevor Sie Ressourcen zerstören, ist es eine bewährte Methode, genau zu überprüfen, was Terraform tun wird. Dies verhindert die versehentliche Löschung kritischer Infrastruktur. Der Befehl terraform plan -destroy erstellt einen Ausführungsplan, der anzeigt, welche Ressourcen zerstört werden, ohne die Zerstörung tatsächlich durchzuführen.
Alle Ihre Arbeiten finden im Verzeichnis ~/project statt. Das Setup-Skript hat bereits eine main.tf-Datei erstellt und angewendet, wodurch eine Datei namens example.txt erzeugt wurde.
Führen Sie nun den folgenden Befehl in Ihrem Terminal aus, um den Zerstörungsplan anzuzeigen:
terraform plan -destroy
Sie werden eine Ausgabe sehen, die der folgenden ähnelt. Diese Ausgabe beschreibt den Plan zur Zerstörung der einen Ressource, die durch unsere Konfiguration verwaltet wird.
local_file.example: Refreshing state... [id=ec3adcab998872def2df6200fb03992ac6f237a4]
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
## local_file.example will be destroyed
- resource "local_file" "example" {
- content = "This is an example file managed by Terraform." -> null
- directory_permission = "0777" -> null
- file_permission = "0777" -> null
- filename = "./example.txt" -> null
- id = "ec3adcab998872def2df6200fb03992ac6f237a4" -> null
}
Plan: 0 to add, 0 to change, 1 to destroy.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.
Zerstörungsplan-Ausgabe bestätigen
In diesem Schritt analysieren wir die Ausgabe des vorherigen Befehls. Das Verständnis des Plans ist entscheidend für die sichere Verwendung von Terraform.
Betrachten Sie die Ausgabe von terraform plan -destroy. Achten Sie auf diese Schlüsselelemente:
Ressourcenaktion (Resource Action): Die Zeile
## local_file.example will be destroyedgibt die beabsichtigte Aktion klar an. Das Symbol-vorresource "local_file" "example"ist die Notation von Terraform für die Zerstörung. Jede Zeile, der ein-vorangestellt ist, zeigt an, dass etwas entfernt wird.Attributänderungen (Attribute Changes): Die Ausgabe zeigt alle Attribute der Ressource und gibt an, dass sie auf
nullgeändert werden, was die Löschung signalisiert. Zum Beispiel:- filename = "./example.txt" -> null.Plan-Zusammenfassung (Plan Summary): Die letzte Zeile,
Plan: 0 to add, 0 to change, 1 to destroy., bietet eine zusammenfassende Übersicht über den gesamten Plan. Dies ist die wichtigste Zeile, um schnell die geplanten Aktionen zu bestätigen.
Durch die Überprüfung dieses Plans können Sie sicher sein, dass nur die Ressource local_file.example betroffen sein wird. Dieser Bestätigungsschritt ist in realen Szenarien unerlässlich, in denen eine Fehlkonfiguration zur unbeabsichtigten Zerstörung wichtiger Ressourcen führen könnte. In diesem Schritt sind keine Befehle auszuführen; der Fokus liegt auf dem Verständnis des Prozesses.
Führen Sie terraform destroy aus, um Ressourcen zu entfernen
In diesem Schritt werden Sie den Zerstörungsplan ausführen. Nachdem Sie den Plan überprüft und sich von den Änderungen überzeugt haben, können Sie mit der eigentlichen Zerstörung fortfahren.
Der Befehl terraform destroy zeigt zunächst denselben Zerstörungsplan zur endgültigen Überprüfung an und fordert Sie dann zur Bestätigung auf, bevor er fortfährt.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
terraform destroy
Terraform zeigt den Plan erneut an und bittet um Ihre Zustimmung.
local_file.example: Refreshing state... [id=ec3adcab998872def2df6200fb03992ac6f237a4]
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
## local_file.example will be destroyed
- resource "local_file" "example" {
- content = "This is an example file managed by Terraform." -> null
- directory_permission = "0777" -> null
- file_permission = "0777" -> null
- filename = "./example.txt" -> null
- id = "ec3adcab998872def2df6200fb03992ac6f237a4" -> null
}
Plan: 0 to add, 0 to change, 1 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value:
Um die Zerstörung zu bestätigen, geben Sie yes ein und drücken Sie die Enter-Taste.
yes
Nach Ihrer Bestätigung fährt Terraform mit der Zerstörung der Ressource fort und gibt den Fortschritt aus.
local_file.example: Destroying... [id=ec3adcab998872def2df6200fb03992ac6f237a4]
local_file.example: Destruction complete after 0s
Destroy complete! Resources: 1 destroyed.
Dies bestätigt, dass die Ressource local_file erfolgreich zerstört wurde.
Überprüfen, ob die Datei vom Dateisystem entfernt wurde
In diesem Schritt überprüfen Sie, ob die Zerstörung der Ressource die beabsichtigte Wirkung auf das System hatte. Da unsere Ressource eine lokale Datei namens example.txt war, sollte die Zerstörung dieser Ressource die Datei vom Dateisystem gelöscht haben.
Sie können dies überprüfen, indem Sie versuchen, die Datei mit dem Befehl ls aufzulisten.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
ls example.txt
Da die Datei gelöscht wurde, wird der Befehl fehlschlagen und Sie erhalten eine Fehlermeldung vom Betriebssystem. Dieser Fehler ist das erwartete Ergebnis und bestätigt, dass die Ressource erfolgreich zerstört wurde.
ls: cannot access 'example.txt': No such file or directory
Dieser Verifizierungsschritt ist wichtig, da er bestätigt, dass die Aktionen von Terraform in der State-Datei in der realen Welt widergespiegelt werden.
Leere terraform.tfstate Datei prüfen
In diesem Schritt untersuchen Sie die Terraform-Zustandsdatei (terraform.tfstate), um zu sehen, wie sie die Zerstörung der Ressource widerspiegelt. Die Zustandsdatei ist eine JSON-Datei, die die von Terraform verwalteten Ressourcen und deren aktuellen Zustand verfolgt.
Nachdem alle Ressourcen in einer Konfiguration zerstört wurden, wird die Zustandsdatei nicht gelöscht. Stattdessen wird sie aktualisiert, um widerzuspiegeln, dass sie keine Ressourcen mehr verwaltet. Das Array resources innerhalb der Zustandsdatei wird leer sein.
Untersuchen wir den Inhalt der Zustandsdatei. Verwenden Sie den Befehl cat, um sie anzuzeigen:
cat terraform.tfstate
Die Ausgabe wird ein JSON-Objekt sein. Beachten Sie, dass der Schlüssel resources nun auf ein leeres Array [] verweist.
{
"version": 4,
"terraform_version": "1.13.3",
"serial": 3,
"lineage": "f25aaab8-c186-2b16-1bae-fe9ba25f81e4",
"outputs": {},
"resources": [],
"check_results": null
}
Dies bestätigt aus der Sicht von Terraform, dass für diese Konfiguration keine Ressourcen mehr unter seiner Verwaltung stehen. Der Zustand ist nun sauber.
Zusammenfassung
Herzlichen Glückwunsch zum Abschluss des Labs! Sie haben erfolgreich den Prozess der Zerstörung von Infrastruktur, die von Terraform verwaltet wird, durchlaufen.
In diesem Lab haben Sie gelernt:
- Die Wichtigkeit der Vorschau von Änderungen mit
terraform plan -destroy, um versehentliches Löschen zu verhindern. - Wie man einen Zerstörungsplan liest und versteht, wobei man auf die Zusammenfassung und die Änderungen auf Ressourcenebene achtet.
- Wie man die Zerstörung von Ressourcen mit dem Befehl
terraform destroyund dem erforderlichen Bestätigungsschritt ausführt. - Wie man überprüft, ob eine Ressource erfolgreich zerstört wurde, indem man sowohl das reale System als auch die Terraform-Zustandsdatei (
terraform.tfstate) überprüft.
Die Beherrschung des Zerstörungs-Workflows ist genauso wichtig wie die Beherrschung der Ressourcenerstellung. Es stellt sicher, dass Sie den gesamten Lebenszyklus Ihrer Infrastruktur sauber und sicher verwalten können.



