Prüfpunkte
Creating Resources in terraform
/ 30
Change Infrastructure
/ 20
Destructive Changes
/ 20
Create Resource Dependencies
/ 20
Create bucket dependent instance
/ 10
Infrastruktur als Code mit Terraform
Dieses Lab wurde mit unserem Partner HashiCorp entwickelt. Ihre personenbezogenen Daten werden möglicherweise an HashiCorp, den Lab-Sponsor, weitergegeben, wenn Sie zugestimmt haben, Produktupdates, Mitteilungen und Angebote in Ihrem Kontoprofil zu erhalten.
GSP750
Übersicht
Terraform ist das Infrastruktur-als-Code-Angebot von HashiCorp. Es handelt sich dabei um ein Tool zum sicheren und wiederholbaren Erstellen, Ändern und Verwalten einer Infrastruktur. Operatoren und Infrastrukturteams können Terraform verwenden, um Umgebungen über eine Konfigurationssprache mit dem Namen HashiCorp Configuration Language (HCL) für visuell lesbare, automatisierte Deployments zu verwalten.
Infrastruktur als Code ist der Prozess, bei dem eine Infrastruktur in einer oder mehreren Dateien verwaltet wird, statt Ressourcen manuell über eine Benutzeroberfläche zu konfigurieren. Eine Ressource in dieser Instanz ist jede Art von Infrastruktur in einer bestimmten Umgebung, z. B. eine virtuelle Maschine, eine Sicherheitsgruppe, eine Netzwerkschnittstelle usw. Auf übergeordneter Ebene ermöglicht Terraform den Operatoren, HCL zu verwenden, um Dateien zu erstellen, die Definitionen der gewünschten Ressourcen bei fast jedem Anbieter (AWS, Google Cloud, GitHub, Docker usw.) enthalten. Außerdem wird mit Terraform das Erstellen dieser Ressourcen zum Zeitpunkt der Anwendung automatisiert.
Ein einfacher Workflow zur Bereitstellung orientiert sich eng an den folgenden Schritten:
- Umfang festlegen: Geben Sie an, welche Ressourcen für ein bestimmtes Projekt erstellt werden müssen.
- Erstellen: Erstellen Sie die Konfigurationsdatei in HCL anhand der festgelegten Parameter.
-
Initialisieren: Führen Sie
terraform init
im Projektverzeichnis mit den Konfigurationsdateien aus. Dadurch werden die richtigen Anbieter-Plug-ins für das Projekt heruntergeladen. -
Planen und anwenden: Führen Sie
terraform plan
aus, um den Erstellungsprozess zu bestätigen. Erstellen Sie dann mitterraform apply
echte Ressourcen sowie die Statusdatei, mit der zukünftige Änderungen in Ihren Konfigurationsdateien mit dem verglichen wird, was tatsächlich in Ihrer Bereitstellungsumgebung vorhanden ist.
Lernziele
Aufgaben in diesem Lab:
- Infrastruktur mit Terraform erstellen, ändern und löschen
- Ressourcenabhängigkeiten mit Terraform erstellen
- Infrastruktur mit Terraform bereitstellen
Einrichtung und Anforderungen
Vor dem Klick auf „Start Lab“ (Lab starten)
Lesen Sie diese Anleitung. Labs sind zeitlich begrenzt und können nicht pausiert werden. Der Timer beginnt zu laufen, wenn Sie auf Lab starten klicken, und zeigt Ihnen, wie lange die Ressourcen für das Lab verfügbar sind.
In diesem praxisorientierten Lab können Sie die Lab-Aktivitäten in einer echten Cloud-Umgebung selbst durchführen – nicht in einer Simulations- oder Demo-Umgebung. Dazu erhalten Sie neue, temporäre Anmeldedaten, mit denen Sie für die Dauer des Labs auf Google Cloud zugreifen können.
Für dieses Lab benötigen Sie Folgendes:
- Einen Standardbrowser (empfohlen wird Chrome)
- Zeit für die Durchführung des Labs – denken Sie daran, dass Sie ein begonnenes Lab nicht unterbrechen können.
Lab starten und bei der Google Cloud Console anmelden
-
Klicken Sie auf Lab starten. Wenn Sie für das Lab bezahlen müssen, wird ein Pop-up-Fenster geöffnet, in dem Sie Ihre Zahlungsmethode auswählen können. Auf der linken Seite befindet sich der Bereich Details zum Lab mit diesen Informationen:
- Schaltfläche Google Cloud Console öffnen
- Restzeit
- Temporäre Anmeldedaten für das Lab
- Ggf. weitere Informationen für dieses Lab
-
Klicken Sie auf Google Cloud Console öffnen (oder klicken Sie mit der rechten Maustaste und wählen Sie Link in Inkognitofenster öffnen aus, wenn Sie Chrome verwenden).
Im Lab werden Ressourcen aktiviert. Anschließend wird ein weiterer Tab mit der Seite Anmelden geöffnet.
Tipp: Ordnen Sie die Tabs nebeneinander in separaten Fenstern an.
Hinweis: Wird das Dialogfeld Konto auswählen angezeigt, klicken Sie auf Anderes Konto verwenden. -
Kopieren Sie bei Bedarf den folgenden Nutzernamen und fügen Sie ihn in das Dialogfeld Anmelden ein.
{{{user_0.username | "Username"}}} Sie finden den Nutzernamen auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
-
Kopieren Sie das folgende Passwort und fügen Sie es in das Dialogfeld Willkommen ein.
{{{user_0.password | "Password"}}} Sie finden das Passwort auch im Bereich Details zum Lab.
-
Klicken Sie auf Weiter.
Wichtig: Sie müssen die für das Lab bereitgestellten Anmeldedaten verwenden. Nutzen Sie nicht die Anmeldedaten Ihres Google Cloud-Kontos. Hinweis: Wenn Sie Ihr eigenes Google Cloud-Konto für dieses Lab nutzen, können zusätzliche Kosten anfallen. -
Klicken Sie sich durch die nachfolgenden Seiten:
- Akzeptieren Sie die Nutzungsbedingungen.
- Fügen Sie keine Wiederherstellungsoptionen oder Zwei-Faktor-Authentifizierung hinzu (da dies nur ein temporäres Konto ist).
- Melden Sie sich nicht für kostenlose Testversionen an.
Nach wenigen Augenblicken wird die Google Cloud Console in diesem Tab geöffnet.
Cloud Shell aktivieren
Cloud Shell ist eine virtuelle Maschine, auf der Entwicklertools installiert sind. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Mit Cloud Shell erhalten Sie Befehlszeilenzugriff auf Ihre Google Cloud-Ressourcen.
- Klicken Sie oben in der Google Cloud Console auf Cloud Shell aktivieren .
Wenn Sie verbunden sind, sind Sie bereits authentifiziert und das Projekt ist auf Ihre Project_ID,
gcloud
ist das Befehlszeilentool für Google Cloud. Das Tool ist in Cloud Shell vorinstalliert und unterstützt die Tab-Vervollständigung.
- (Optional) Sie können den aktiven Kontonamen mit diesem Befehl auflisten:
- Klicken Sie auf Autorisieren.
Ausgabe:
- (Optional) Sie können die Projekt-ID mit diesem Befehl auflisten:
Ausgabe:
gcloud
finden Sie in Google Cloud in der Übersicht zur gcloud CLI.
Aufgabe 1: Infrastruktur erstellen
Terraform ist in Cloud Shell vorinstalliert. Sie können also direkt beginnen und Infrastruktur erstellen.
Erstellen Sie zuerst Ihre Beispielkonfiguration in einer Datei mit dem Namen main.tf
. Terraform erkennt Dateien mit der Endung .tf
oder .tf.json
als Konfigurationsdateien und lädt diese, wenn es ausgeführt wird.
- Erstellen Sie die Datei
main.tf
:
-
Klicken Sie auf die Schaltfläche Editor öffnen in der Symbolleiste von Cloud Shell. (Sie können zwischen Cloud Shell und dem Code-Editor wechseln. Verwenden Sie dazu entsprechend die Symbole Editor öffnen und Terminal öffnen oder klicken Sie auf die Schaltfläche In neuem Fenster öffnen, damit der Editor auf einem eigenen Tab geöffnet bleibt.)
-
Fügen Sie im Editor die folgenden Inhalte der Datei
main.tf
hinzu.
terraform {}
, um dieses Snippet in Terraform 0.12 zu verwenden.Terraform-Block
Der Block terraform {}
ist erforderlich, damit Terraform weiß, welcher Anbieter aus der Terraform-Registry heruntergeladen werden soll. In der Konfiguration oben ist die Quelle des Anbieters google
als hashicorp/google
definiert, was die Abkürzung für registry.terraform.io/hashicorp/google
ist.
Sie können auch jedem im Block required_providers
definierten Anbieter eine Version zuweisen. Das Argument version
ist optional, wird aber empfohlen. Es wird verwendet, um den Anbieter auf eine bestimmte Version oder Reihe von Versionen zu beschränken. So wird verhindert, dass ein neuer Anbieter heruntergeladen wird, der möglicherweise funktionsgefährdende Änderungen enthält. Wird die Version nicht angegeben, lädt Terraform bei der Initialisierung automatisch den neuesten Anbieter herunter.
Weitere Informationen finden Sie auf der Website von HashiCorp Terraform unter Provider Requirements (Anbieteranforderungen).
Anbieter
Der Block provider
wird verwendet, um den genannten Anbieter, in diesem Fall google
, zu konfigurieren. Ein Anbieter ist für das Erstellen und Verwalten von Ressourcen verantwortlich. Mehrere Anbieterblöcke können vorhanden sein, wenn eine Terraform-Konfiguration Ressourcen von unterschiedlichen Anbietern verwaltet.
Initialisierung
Der erste Befehl, der bei einer neuen Konfiguration ausgeführt wird, lautet terraform init
. Dies gilt auch, wenn Sie eine bestehende Konfiguration der Versionsverwaltung überprüfen. Mit diesem Befehl werden verschiedene lokale Einstellungen und Daten initialisiert, die von den nachfolgenden Befehlen verwendet werden.
- Initialisieren Sie Ihre neue Terraform-Konfiguration, indem Sie den Befehl
terraform init
im gleichen Verzeichnis wie Ihre Dateimain.tf
ausführen:
Ressourcen erstellen
- Wenden Sie Ihre Konfiguration nun durch Ausführen des Befehls
terraform apply
an:
In der Ausgabe steht ein +
neben der Ressource "google_compute_network" "vpc_network"
. Das bedeutet, dass Terraform diese Ressource erstellen wird. Darunter werden die Attribute angezeigt, die festgelegt werden. Wird der Wert (known after apply)
angezeigt, bedeutet das, dass der Wert unbekannt ist, bis die Ressource erstellt wird.
Wenn der Plan erfolgreich erstellt wurde, hält Terraform an und fährt erst nach einer Bestätigung fort. An dieser Stelle kann ohne Änderungen an der Infrastruktur abgebrochen werden, falls etwas im Plan fehlerhaft oder gefährlich erscheint.
Wenn terraform apply
aufgrund eines Fehlers fehlgeschlagen ist, lesen Sie die Fehlermeldung und beheben Sie den aufgetretenen Fehler.
- Hier sieht der Plan akzeptabel aus. Geben Sie also, wenn Sie zur Bestätigung aufgefordert werden,
yes
ein, um fortzufahren.
Die Ausführung des Plans dauert einige Minuten, da Terraform wartet, bis das Netzwerk erfolgreich erstellt wurde:
Danach ist Terraform fertig. In der Cloud Console wird das Netzwerk angezeigt, das Sie bereitgestellt haben.
- Gehen Sie in der Console über das Navigationsmenü zum VPC-Netzwerk. Sie sehen, dass das
terraform-network
bereitgestellt wurde.
- Führen Sie in Cloud Shell den Befehl
terraform show
aus, um den aktuellen Status zu prüfen:
Diese Werte können als Referenz für die Konfiguration weiterer Ressourcen oder Ausgaben dienen. Dies wird später in diesem Lab beschrieben.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 2: Infrastruktur ändern
Im vorherigen Abschnitt haben Sie eine grundlegende Infrastruktur mit Terraform erstellt: ein VPC-Netzwerk. In diesem Abschnitt werden Sie Ihre Konfiguration ändern und sehen, wie Terraform mit den Änderungen umgeht.
Eine Infrastruktur verändert sich ständig und Terraform ist darauf ausgelegt, diese Änderung zu bewältigen und umzusetzen. Wenn Sie Terraform-Konfigurationen ändern, erstellt Terraform einen Ausführungsplan, der nur das verändert, was für den gewünschten Status notwendig ist.
Durch den Einsatz von Terraform für die Änderung der Infrastruktur können Sie nicht nur die Versionen Ihrer Konfigurationen, sondern auch den Status verwalten. Damit können Sie dann sehen, wie sich die Infrastruktur im Laufe der Zeit weiterentwickelt.
Ressourcen hinzufügen
Sie können neue Ressourcen hinzufügen, indem Sie diese Ihrer Terraform-Konfiguration hinzufügen und terraform apply
ausführen, um sie bereitzustellen.
- Fügen Sie im Editor
main.tf
eine Compute-Instanzressource hinzu:
Diese Ressource enthält weitere Argumente. Der Name und der Maschinentyp sind einfache Strings. boot_disk
und network_interface
sind jedoch komplexere Blöcke. Alle verfügbaren Optionen finden Sie in der Dokumentation zu google_compute_instance.
Für dieses Beispiel verwendet Ihre Compute-Instanz ein Debian-Betriebssystem. Dieses wird mit dem zuvor erstellten VPC-Netzwerk verbunden. Beachten Sie, wie diese Konfiguration sich mit google_compute_network.vpc_network.name
auf das Namensattribut des Netzwerks bezieht. google_compute_network.vpc_network
ist die ID, die die Werte in dem Block abgleicht, der das Netzwerk definiert, und name
ist ein Attribut dieser Ressource.
Durch das Vorhandensein des Blocks access_config
wird auch ohne Argumente sichergestellt, dass die Instanz über das Internet zugänglich sein wird.
- Führen Sie jetzt
terraform apply
aus, um die Compute-Instanz zu erstellen:
- Bestätigen Sie wieder mit
yes
, wenn Sie dazu aufgefordert werden.
Dies ist eine relativ einfache Änderung. Sie haben Ihrer Konfiguration eine Ressource „google_compute_instance“ mit dem Namen „vm_instance“ hinzugefügt und Terraform erstellte die Ressource in Google Cloud.
Ressourcen ändern
Neben dem Erstellen von Ressourcen kann Terraform auch Änderungen an diesen Ressourcen vornehmen.
- Fügen Sie Ihrer „vm_instance“ ein Argument
tags
hinzu, damit es so aussieht:
- Führen Sie wieder
terraform apply
aus, um die Instanz zu aktualisieren:
- Das Präfix
~
bedeutet, dass Terraform die Ressource direkt aktualisiert. Sie können diese Änderung jetzt vornehmen, indem Sie mityes
antworten. Terraform fügt dann Ihrer Instanz die Tags hinzu.
Klicken Sie auf Fortschritt prüfen.
Destruktive Änderungen
Eine destruktive Änderung ist eine Änderung, bei der der Anbieter die vorhandene Ressource ersetzt, anstatt sie zu aktualisieren. Das passiert normalerweise, wenn der Cloud-Anbieter das Aktualisieren der Ressource nicht wie in Ihrer Konfiguration beschrieben unterstützt.
Das Ändern des Laufwerk-Images Ihrer Instanz ist ein Beispiel einer destruktiven Änderung.
- Bearbeiten Sie den Block
boot_disk
in der Ressourcevm_instance
in Ihrer Konfigurationsdatei und nehmen Sie folgende Änderung vor:
- Führen Sie jetzt wieder
terraform apply
aus, um zu sehen, wie Terraform diese Änderung auf die vorhandenen Ressourcen anwendet:
Das Präfix -/+
bedeutet, dass Terraform die Ressource löscht und neu erstellt, anstatt sie direkt zu aktualisieren. Einige Attribute können direkt aktualisiert werden und werden mit dem Präfix ~
angezeigt. Wenn Sie aber das Bootlaufwerk-Image für eine Instanz ändern, müssen Sie es neu erstellen. Terraform und der Google Cloud-Anbieter übernehmen diese Detailarbeit für Sie und aus dem Ausführungsplan geht klar hervor, welche Aktionen Terraform vornimmt.
Außerdem zeigt der Ausführungsplan, dass die Änderung des Laufwerk-Images der Grund dafür ist, dass Ihre Instanz ersetzt werden musste. Anhand dieser Informationen können Sie Ihre Änderungen anpassen, um möglicherweise Aktualisierungen zum Löschen/Erstellen zu vermeiden, wenn sie in einigen Situationen nicht akzeptabel sind.
- Bevor Sie fortfahren können, fordert Terraform Sie wieder zur Genehmigung des Ausführungsplans auf. Antworten Sie mit
yes
, um die geplanten Schritte auszuführen.
Wie im Ausführungsplan angegeben löschte Terraform zuerst die vorhandene Instanz und erstellte dann eine neue. Sie können wieder terraform show
verwenden, um die neuen mit dieser Instanz verknüpften Werte anzuzeigen.
Infrastruktur löschen
Sie haben nun gesehen, wie eine Infrastruktur erstellt und geändert wird. Bevor wir mit dem Erstellen mehrerer Ressourcen und deren Abhängigkeiten fortfahren, erfahren Sie, wie Sie Ihre über Terraform verwaltete Infrastruktur vollständig löschen können.
Das Löschen einer Infrastruktur kommt in Produktionsumgebungen selten vor. Wenn Sie aber Terraform verwenden, um mehrere Umgebungen z. B. für Entwicklung, Tests und Staging hochzufahren, ist das Löschen oft sinnvoll.
Ressourcen können mit dem Befehl terraform destroy
gelöscht werden. Dieser ähnelt terraform apply
, verhält sich aber so, als ob alle Ressourcen aus der Konfiguration entfernt wurden.
- Testen Sie den Befehl
terraform destroy
. Antworten Sieyes
, um diesen Plan auszuführen und die Infrastruktur zu löschen.
Das Präfix -
gibt an, dass die Instanz und das Netzwerk gelöscht werden. Wie bei „apply“ zeigt Terraform den Ausführungsplan und wartet auf die Genehmigung, bevor Änderungen vorgenommen werden.
Genau wie bei terraform apply
legt Terraform die Löschreihenfolge fest. Google Cloud erlaubt nicht, dass ein VPC-Netzwerk gelöscht wird, wenn es noch Ressourcen enthält. Deshalb wartet Terraform, bis die Instanz gelöscht ist, bevor das Netzwerk gelöscht wird. Bei der Durchführung von Vorgängen erstellt Terraform ein Abhängigkeitsdiagramm, um die richtige Reihenfolge der Vorgänge festzulegen. In komplizierteren Fällen mit mehreren Ressourcen führt Terraform Vorgänge parallel durch, sofern dies sicher ist.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 3: Ressourcenabhängigkeiten erstellen
In diesem Abschnitt erfahren Sie mehr über Ressourcenabhängigkeiten und wie Sie Ressourcenparameter verwenden können, um Informationen über eine Ressource an andere Ressourcen weiterzugeben.
Eine echte Infrastruktur hat unterschiedliche Ressourcen und Ressourcentypen. Terraform-Konfigurationen können mehrere Ressourcen und Ressourcentypen enthalten, die sich wiederum über mehrere Anbieter erstrecken können.
In diesem Abschnitt wird anhand eines einfachen Beispiels erklärt, wie Sie mehrere Ressourcen konfigurieren und Ressourcenattribute zur Konfiguration weiterer Ressourcen verwenden können.
- Erstellen Sie Ihr Netzwerk und Ihre Instanz neu. Nachdem Sie den Prompt mit
yes
beantwortet haben, werden die Ressourcen erstellt:
Statische IP-Adresse zuweisen
- Ergänzen Sie nun Ihre Konfiguration, indem Sie der VM-Instanz eine statische IP in
main.tf
zuweisen:
Dies sollte Ihnen aus dem vorherigen Beispiel für das Hinzufügen einer VM-Instanzressource bekannt sein. Dieses Mal erstellen Sie allerdings einen Ressourcentyp „google_compute_address“. Dieser Ressourcentyp weist Ihrem Projekt eine reservierte IP-Adresse zu.
- Führen Sie als nächstes
terraform plan
aus:
Sie können sehen, was mit terraform plan
erstellt wird:
Im Gegensatz zu terraform apply
zeigt der Befehl plan
nur, was geändert werden würde, und die Änderungen werden nie direkt angewendet. Beachten Sie, dass Sie bisher als einzige Änderung eine statische IP hinzugefügt haben. Als Nächstes müssen Sie die IP-Adresse an Ihre Instanz anhängen.
- Aktualisieren Sie die Konfiguration
network_interface
für Ihre Instanz so:
Der Block access_config
hat mehrere optionale Argumente und in diesem Fall setzen Sie nat_ip
als statische IP-Adresse. Wenn Terraform diese Konfiguration liest, geschieht dies:
- Es wird dafür gesorgt, dass
vm_static_ip
vorvm_instance
erstellt wird - Die Attribute von
vm_static_ip
werden im Status gespeichert -
nat_ip
wird auf den Wert des Attributsvm_static_ip.address
gesetzt
- Führen Sie den Terraform-Plan noch einmal aus und speichern Sie dieses Mal den Plan:
Wenn Sie den Plan auf diese Weise speichern, sorgen Sie dafür, dass Sie genau denselben Plan in Zukunft anwenden können. Sollten Sie versuchen, die vom Plan erstellte Datei anzuwenden, prüft Terraform vor dem Anwenden des Plans zuerst, ob genau dieselben Änderungen vorgenommen werden.
In diesem Fall können Sie sehen, dass Terraform eine neue google_compute_address
erstellt und die vorhandene VM so aktualisiert, dass diese verwendet wird.
- Führen Sie
terraform apply "static_ip"
aus, um zu sehen, wie Terraform diese Änderung anwenden möchte:
Wie oben gezeigt, hat Terraform die statische IP erstellt, bevor die VM-Instanz geändert wurde. Aufgrund des Interpolationsausdrucks, der die IP-Adresse an die Netzwerkschnittstellen-Konfiguration der Instanz übergibt, kann Terraform eine Abhängigkeit ableiten. Außerdem weiß Terraform, dass die statische IP erstellt werden muss, bevor die Instanz aktualisiert wird.
Klicken Sie auf Fortschritt prüfen.
Implizite und explizite Abhängigkeiten
Terraform untersucht die in den Interpolationsausdrücken verwendeten Ressourcenattribute und kann so automatisch ableiten, ob eine Ressource von einer anderen abhängt. Im obigen Beispiel wird durch den Verweis auf google_compute_address.vm_static_ip.address
eine implizite Abhängigkeit von der google_compute_address
mit dem Namen vm_static_ip
erstellt.
Terraform verwendet diese Informationen zur Abhängigkeit, um die korrekte Reihenfolge zu ermitteln, in der unterschiedliche Ressourcen erstellt und aktualisiert werden. Im obigen Beispiel weiß Terraform, dass die vm_static_ip
erstellt werden muss, bevor die vm_instance
aktualisiert wird, um diese zu verwenden.
Implizite Abhängigkeiten über Interpolationsausdrücke sind die beste Möglichkeit, Terraform über diese Beziehungen zu informieren, und sollten verwendet werden, wann immer dies möglich ist.
Manchmal gibt es Abhängigkeiten zwischen Ressourcen, die für Terraform nicht sichtbar sind. Das Argument depends_on
kann einer beliebigen Ressource hinzugefügt werden und akzeptiert eine Liste von Ressourcen, für die explizite Abhängigkeiten erstellt werden sollen.
Beispielsweise erwartet eine Anwendung, die Sie auf Ihrer Instanz ausführen, die Verwendung eines bestimmten Cloud Storage-Buckets, aber diese Abhängigkeit ist innerhalb des Anwendungscodes konfiguriert und somit für Terraform nicht sichtbar. In diesem Fall können Sie depends_on
verwenden, um die Abhängigkeit explizit zu deklarieren.
- Fügen Sie einen Cloud Storage-Bucket und eine Instanz mit einer expliziten Abhängigkeit von dem Bucket hinzu, indem Sie
main.tf
Folgendes hinzufügen:
UNIQUE-BUCKET-NAME
durch einen eindeutigen, gültigen Namen für einen Bucket ersetzen. Ihr Name und das aktuelle Datum sind normalerweise ausreichend für einen eindeutigen Bucket-Namen.
Sie fragen sich vielleicht, wo in Ihrer Konfiguration diese Ressourcen eingesetzt werden sollen. Die Reihenfolge, in der Ressourcen in einer Terraform-Konfigurationsdatei definiert werden, hat keine Auswirkung darauf, wie Terraform Ihre Änderungen anwendet. Organisieren Sie Ihre Konfigurationsdateien so, dass es für Sie und Ihr Team am sinnvollsten ist.
- Führen Sie nun „terraform plan“ und „terraform apply“ aus, um diese Änderungen in Aktion zu sehen:
Klicken Sie auf Fortschritt prüfen.
- Bevor Sie fortfahren, entfernen Sie diese neuen Ressourcen aus Ihrer Konfiguration und führen Sie
terraform apply
noch einmal aus, um diese zu löschen. Sie werden den Bucket oder die zweite Instanz in diesem Lab nicht weiter verwenden.
Aufgabe 4: Infrastruktur bereitstellen
Die Compute-Instanz, die Sie an dieser Stelle gestartet haben, basiert auf dem angegebenen Google-Image. Es ist jedoch keine zusätzliche Software installiert oder Konfiguration angewendet.
Google Cloud ermöglicht es Kunden, ihre eigenen benutzerdefinierten Betriebssystem-Images zu verwalten. So lässt sich sicherstellen, dass die von Ihnen mit Terraform bereitgestellten Instanzen nach Ihren Anforderungen vorkonfiguriert sind. Packer ist das ideale Tool hierfür und beinhaltet einen Builder für Google Cloud.
Terraform verwendet Bereitsteller, um Dateien hochzuladen, Shell-Scripts auszuführen oder andere Software wie Tools für die Konfigurationsverwaltung zu installieren und auszulösen.
Bereitsteller definieren
- Zur Definition eines Bereitstellers ändern Sie den Ressourcenblock, der die erste
vm_instance
in Ihrer Konfiguration definiert, so:
Damit wird ein provisioner
-Block innerhalb des Blocks resource
hinzugefügt. Mehrere provisioner
-Blöcke können hinzugefügt werden, um mehrere Bereitstellungsschritte zu definieren. Terraform unterstützt viele Bereitsteller. Für dieses Beispiel verwenden Sie allerdings den Bereitsteller local-exec
.
Der Bereitsteller local-exec
führt einen Befehl lokal auf dem Rechner aus, der Terraform ausführt, aber nicht auf der VM-Instanz selbst. Sie verwenden diesen Bereitsteller im Vergleich zu den anderen, weshalb wir jetzt keine Verbindungsinformationen angeben müssen.
Dies zeigt auch ein Beispiel der String-Interpolation, das komplexer als bisher ist. Jede VM-Instanz kann mehrere Netzwerkschnittstellen haben. Benennen Sie deshalb die erste network_interface[0]
und beginnen Sie die Zählung wie in den meisten Programmiersprachen bei 0. Jede Netzwerkschnittstelle hat auch mehrere „access_config“-Blöcke, also geben Sie auch hier den ersten an.
- Führen Sie
terraform apply
aus:
An dieser Stelle kann die Ausgabe auf den ersten Blick verwirrend sein.
Terraform hat keine durchzuführenden Aufgaben gefunden. Wenn Sie nachsehen, werden Sie feststellen, dass es keine Datei ip_address.txt
auf ihrem lokalen Rechner gibt.
Terraform behandelt Bereitsteller aus anderen Argumenten anders. Bereitsteller werden nur ausgeführt, wenn eine Ressource erstellt wird. Das Hinzufügen eines Bereitstellers erzwingt aber nicht, dass eine Ressource gelöscht oder neu erstellt wird.
- Verwenden Sie
terraform taint
, um Terraform anzuweisen, die Instanz neu zu erstellen:
Eine markierte Ressource wird gelöscht und während des nächsten apply
neu erstellt.
- Führen Sie jetzt
terraform apply
aus:
- Sehen Sie sich den Inhalt der Datei
ip_address.txt
an, um zu überprüfen, ob alles funktioniert hat.
Sie enthält wie angewiesen die IP-Adresse.
Fehlgeschlagene Bereitsteller und markierte Ressourcen
Wenn eine Ressource erfolgreich erstellt wurde, jedoch in einem Bereitstellungsschritt fehlschlägt, gibt Terraform einen Fehler aus und kennzeichnet die Ressource als markiert. Eine markierte Ressource ist weiterhin vorhanden, sollte jedoch nicht als sicher gelten, da die Bereitstellung fehlgeschlagen ist.
Wenn Sie Ihren nächsten Ausführungsplan generieren, entfernt Terraform alle markierten Ressourcen, erstellt neue Ressourcen und versucht, sie nach dem Erstellen wieder bereitzustellen.
Destroy-Bereitsteller
Es können auch Bereitsteller definiert werden, die nur während eines Löschvorgangs ausgeführt werden. Diese sind hilfreich, wenn Sie ein System bereinigen, Daten extrahieren usw.
Für viele Ressourcen wird empfohlen, nach Möglichkeit integrierte Bereinigungsmechanismen (z. B. init-Scripts) zu verwenden. Bei Bedarf können aber Bereitsteller verwendet werden.
In diesem Lab werden keine Beispiele für Destroy-Bereitsteller gezeigt. Weitere Informationen zu Destroy-Bereitstellern finden Sie in der Dokumentation für Bereitsteller.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
In diesem Lab haben Sie gelernt, wie Sie mit Terraform eine Infrastruktur aufbauen, ändern und löschen. Sie haben dann Ressourcenabhängigkeiten erstellt und die grundlegende Infrastruktur mit Terraform-Konfigurationsdateien bereitgestellt.
Nächste Schritte / Weitere Informationen
In den folgenden Ressourcen finden Sie mehr praktische Übungen für Terraform:
- HashiCorp im Google Cloud Marketplace
- HashiCorp-Tutorials
- Terraform-Community
- Google-Beispiele für Terraform
Google Cloud-Schulungen und -Zertifizierungen
In unseren Schulungen erfahren Sie alles zum optimalen Einsatz unserer Google Cloud-Technologien und können sich entsprechend zertifizieren lassen. Unsere Kurse vermitteln technische Fähigkeiten und Best Practices, damit Sie möglichst schnell mit Google Cloud loslegen und Ihr Wissen fortlaufend erweitern können. Wir bieten On-Demand-, Präsenz- und virtuelle Schulungen für Anfänger wie Fortgeschrittene an, die Sie individuell in Ihrem eigenen Zeitplan absolvieren können. Mit unseren Zertifizierungen weisen Sie nach, dass Sie Experte im Bereich Google Cloud-Technologien sind.
Anleitung zuletzt am 26. Januar 2024 aktualisiert
Lab zuletzt am 25. September 2023 getestet
© 2024 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.