Terraform, entwickelt von HashiCorp, ist ein weit verbreitetes IaC-Tool (Infrastructure-as-Code), mit dem Benutzer Softwareinfrastruktur mithilfe einer hochrangigen Konfigurationssprache definieren und bereitstellen können. Mit der zunehmenden Einführung Cloud-basierter Infrastrukturen ist Terraform für die Verwaltung und Automatisierung der Bereitstellung von Infrastrukturressourcen unerlässlich geworden. Einer der Kernbefehle in Terraform ist der Terraform-Plan, ein wichtiger Schritt im Implementierungsprozess, der sicherstellt, dass Änderungen an der Infrastruktur sicher, vorhersehbar und effizient sind.
In diesem Artikel werfen wir einen genaueren Blick auf diesen Befehl, was er bewirkt und wie er seine Ergebnisse für Ihre Terraform-Konfigurationen interpretiert.
Was ist ein Terraform-Plan?
Der Befehl „Terraform Plan“ ist ein wichtiger Bestandteil des Terraform-Workflows, der als Probelauf oder Vorschau der Änderungen dient, die Terraform an Ihrer Infrastruktur vornehmen wird. Es vergleicht den aktuellen Zustand Ihrer Infrastruktur mit dem gewünschten Zustand, der in Ihren Terraform-Konfigurationsdateien definiert ist, und zeigt die spezifischen Maßnahmen an, die Terraform ergreifen wird, um die Lücke zu schließen. Dazu gehören das Hinzufügen, Löschen und Modifizieren von Ressourcen, z. B. das Erstellen neuer virtueller Maschinen, das Hochskalieren bestehender Datenbanken oder das Entfernen nicht verwendeter Storage-Volumes.
Vorteile des Terraform-Plans
Die Möglichkeit, eine Vorschau zu erhalten, was eine Änderung Ihres Konfigurationscodes für Ihre Infrastruktur bedeutet, ist in vielerlei Hinsicht vorteilhaft, darunter:
- Transparenz: Der Terraform-Plan bietet einen detaillierten Überblick über die bevorstehenden Änderungen und bietet ein klares Bild davon, was in Ihrer Infrastruktur erstellt, geändert oder gelöscht wird. Diese Transparenz trägt dazu bei, Fehler zu minimieren und stellt sicher, dass alle am Implementierungsprozess Beteiligten auf dem gleichen Stand sind.
- Risikominderung: Durch die vorherige Vorschau der Änderungen können Benutzer potenzielle Probleme erkennen und angehen, bevor sie Services unterbrechen. Terraform-Plan kann dabei helfen, Ressourcenkonflikte aufzudecken (z. B. Erstellen einer VM mit einem doppelten Namen), fehlende Abhängigkeiten (z. B. eine Datenbank, die eine bestimmte Sicherheitsgruppe erfordert, die nicht konfiguriert ist) oder unbeabsichtigte Änderungen aufgrund von Tippfehlern in Konfigurationsdateien.
- Zusammenarbeit: Terraform-Plan lässt sich nahtlos in Versionskontrollsysteme wie Git integrieren und erleichtert die Zusammenarbeit im Team. Die Weitergabe des Planergebnisses an Teammitglieder ermöglicht die Überprüfung von Änderungen im Kontext von Code-Commitments und fördert Transparenz und Verantwortlichkeit, bevor Änderungen implementiert werden.
- Effizienz: Terraform-Plan hilft Nutzern, Infrastrukturänderungen methodisch zu planen und durchzuführen. Durch die Analyse des Plans können Sie potenzielle Engpässe oder Ineffizienzen erkennen, bevor Sie die Änderungen anwenden.
- Sicherheit: Terraform-Plan fungiert als Sicherheitsnetz, da Sie Änderungen überprüfen und validieren können, bevor sie auf Ihre Produktionsinfrastruktur angewendet werden. Dieser Schutz trägt dazu bei, versehentliche Änderungen zu verhindern und stellt die Stabilität und Zuverlässigkeit Ihrer Cloud-Umgebung sicher.
So führen Sie einen Terraform-Plan aus
Um den Terraform-Plan auszuführen, stellen Sie zunächst sicher, dass Terraform auf Ihrem lokalen Rechner installiert ist. Sie können die entsprechende Version von der offiziellen HashiCorp-Website herunterladen und installieren.
Bevor Sie den Planbefehl ausführen, müssen Sie eine grundlegende Terraform-Konfigurationsdatei mit dem Namen main.tf in Ihrem Arbeitsverzeichnis erstellen. Unten sehen Sie ein Beispiel für eine einfache Konfiguration, die eine virtuelle Maschinenressource in einem Cloud-Anbieter erstellt:
# Configure the cloud provider (replace with your provider details)
provider "aws" {
region = "us-east-1"
}
# Define a virtual machine resource
resource "aws_instance" "my_vm" {
ami = "ami-0f78f7e824d9499e0" # Replace with the desired AMI ID
instance_type = "t2.micro"
}
1. Das Terraform-Verzeichnis initialisieren
Navigieren Sie zu Ihrem Arbeitsverzeichnis mit der Datei main.tf und führen Sie den folgenden Befehl in Ihrem Terminal aus:
$ terraform init
Dieser Befehl initialisiert das Terraform-Verzeichnis, lädt alle erforderlichen in Ihrer Konfiguration genannten Plug-ins oder Module herunter und bereitet die Umgebung auf die Arbeit mit Terraform vor.
2. Terraform-Plan ausführen
Sobald die Initialisierung abgeschlossen ist, führen Sie den folgenden Befehl aus, um den Ausführungsplan zu erstellen:
$ terraform plan
Dieser Befehl analysiert Ihre Terraform-Konfiguration und vergleicht sie mit dem aktuellen Zustand Ihrer Infrastruktur (falls vorhanden). Es zeigt dann einen detaillierten Plan an, der die Maßnahmen beschreibt, die Terraform ergreifen wird, um den gewünschten Zustand zu erreichen, der in Ihrer Konfiguration definiert ist. Der Plan zeigt in der Regel die Ressourcen an, die erstellt, geändert oder gelöscht werden.
3. Plan-Ausgabe speichern
Wenn Sie den Plan für die Zukunft speichern oder mit Teammitgliedern teilen möchten, können Sie optional das -out-Flag mit dem Planbefehl verwenden. Mit dem folgenden Befehl wird der Plan beispielsweise in einer Datei namens plan.tfplan gespeichert:
$ terraform plan -out=plan.tfplan
Der Befehl „Terraform Plan“ zeigt nur eine Vorschau der Änderungen an. Es werden keine Änderungen an Ihrer Infrastruktur vorgenommen. Nachdem Sie den Plan überprüft und genehmigt haben, können Sie den Befehl $ terraform apply verwenden, um die geplanten Änderungen durchzuführen.
Verstehen und Analysieren der Ergebnisse des Terraform-Plans
Die Ergebnisse des Terraform-Plans sind in der Regel in mehrere Abschnitte unterteilt, von denen jeder wertvolle Einblicke in die geplanten Maßnahmen bietet:
Ressourcenaktionen
In diesem Abschnitt werden die konkreten Maßnahmen aufgeführt, die Terraform an Ihren Infrastrukturressourcen durchführen möchte. Diese Aktionen sind in drei Haupttypen kategorisiert:
- Erstellen (+): Dieses Symbol zeigt an, dass Terraform basierend auf Ihrer Konfiguration neue Ressourcen erstellt.
- Lesen (~): Dieses Symbol bedeutet, dass Terraform den Status bestehender Ressourcen liest, um festzustellen, ob Änderungen erforderlich sind. Dieses Symbol ist in der Planausgabe weniger häufig, da Terraform in der Regel die erforderlichen Maßnahmen während der Planungsphase bestimmt.
- Löschen (-): Dieses Symbol zeigt an, dass Terraform vorhandene Ressourcen löscht, die nicht mehr in Ihrer Konfiguration definiert sind.
Ressourcendetails
Dieser Abschnitt enthält ausführliche Informationen zu jeder Ressource, die vom Plan betroffen sein wird. Hier ist eine Aufschlüsselung der Details, die Sie in der Regel finden können:
- Ressourcentyp: Dies gibt die Art der Infrastrukturressource an, die Terraform verwaltet (z. B. aws_instance, azurerm_resource_group ).
- Ressourcenname: Dies identifiziert den eindeutigen Namen, der der Ressource in Ihrer Terraform-Konfiguration zugewiesen ist.
Geplante Änderungen
In diesem Abschnitt werden die spezifischen Änderungen beschrieben, die auf die Ressource angewendet werden. Für Ressourcen, die erstellt werden (gekennzeichnet durch +), werden die Attribute und die entsprechenden Werte aufgeführt, die definiert werden. Bei Ressourcen, die geändert werden, werden die Änderungen an vorhandenen Attributen angezeigt.
Zusammenfassung
Der Plan-Output schließt oft mit einem Zusammenfassungsabschnitt ab, der einen umfassenden Überblick über die geplanten Maßnahmen bietet. Diese Zusammenfassung unterteilt in der Regel die Gesamtzahl der Ressourcen in die folgenden Kategorien:
Hinzufügen: Die Anzahl der neuen Ressourcen, die erstellt werden
Zu ändern: Die Anzahl der vorhandenen Ressourcen, die geändert werden
Zu vernichten: Die Anzahl der vorhandenen Ressourcen, die gelöscht werden
Wenn Sie einen Terraform-Plan mit der zuvor erstellten Beispielkonfiguration ausführen, erhalten Sie ähnliche Ergebnisse wie die folgenden:
# $ terraform plan
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:
# aws_instance.my_vm will be created
resource "aws_instance" "my_vm" {
+ ami = "ami-0f78f7e824d9499e0"
+ instance_type = "t2.micro"
+ tags = {
+ Name = "sample-tag"
}
}
1. Ressourcenaktionen: Die erste Zeile zeigt an, dass Terraform während dieses Plans Erstellungsmaßnahmen (+) durchführen wird.
2. Ressourcendetails: Der nachfolgende Abschnitt befasst sich mit den Details einer einzigen Ressource, aws_instance.my_vm . Dies bedeutet, dass Terraform in Ihrer AWS-Umgebung eine neue AWS EC2-Instanz namens my_vm erstellen wird. In den Details werden ferner die AMI-ID (ami-0f78f7e824d9499e0), der Instanztyp (t2.micro ) und ein Tag (Name = „sample-tag “) angegeben, die Terraform auf die neue Instanz anwenden wird.
3. Zusammenfassung (implizit): Obwohl in diesem Beispiel nicht explizit dargestellt, kann eine Zusammenfassung am Ende einer komplexeren Planausgabe angezeigt werden, die die Gesamtzahl der zu erstellenden Ressourcen angibt.
Best Practices für die Verwendung des Terraform-Plans
Der Befehl „Terraform Plan“ ist Ihr Sicherheitsnetz, bevor Sie Infrastrukturänderungen anwenden. Im Folgenden finden Sie einige wichtige Praktiken, um ihre Vorteile zu maximieren:
Ressourcenänderungen überprüfen:
- Konzentrieren Sie sich auf Ressourcen, die für die Erstellung (+) oder Löschung (-) markiert sind.
- Überprüfen Sie, ob die Attributwerte für neue Ressourcen mit Ihrer Absicht übereinstimmen (z. B. AMI-ID, Storage-Größe).
- Überprüfen Sie die Änderungen an vorhandenen Ressourcen auf Genauigkeit.
Potenzielle Probleme erkennen:
- Achten Sie auf Ressourcenkonflikte (z. B. doppelte Namen, fehlende Abhängigkeiten).
- Stellen Sie sicher, dass alle erforderlichen Abhängigkeiten (z. B. Sicherheitsgruppen) definiert sind.
- Seien Sie vorsichtig bei unerwarteten Ressourcenlöschungen, die Services stören könnten.
Ausschöpfung des Ausgangs:
- Überprüfen Sie, ob die geplanten Änderungen mit Ihren Infrastrukturzielen übereinstimmen.
- Berücksichtigen Sie potenzielle Kostenauswirkungen im Zusammenhang mit Ressourcenänderungen. Sie können auch die Planergebnisse für die Teamüberprüfung und -kommunikation teilen.
Fazit
Terraform-Plan ist ein leistungsstarkes Tool im Terraform-Workflow. Es bietet eine sichere und transparente Methode, um Infrastrukturänderungen vor der Anwendung in der Vorschau anzuzeigen und zu validieren. Durch das Verständnis und die effektive Nutzung des Terraform-Plans können Sie sicherstellen, dass Ihre Implementierungen effizient, vorhersehbar und frei von unbeabsichtigten Folgen sind.
Pure Storage bietet die besten persistenten Block-Storage-Lösungen für Ihre Terraform-Implementierungen. Portworx® bietet eine umfassende Datenplattform für alle Ihre Container- und Kubernetes Terraform-Workloads. Mit Pure Cloud Block Store™ können Sie alle Datenbank- oder Container-Workloads in der Cloud ausführen, genau wie Sie es in einer lokale Infrastruktur tun können.