Prüfpunkte
Provision infrastructure
/ 50
Upload files to the bucket
/ 50
Mit Terraform-Modulen interagieren
Dieses Lab wurde mit unserem Partner Hashicorp entwickelt. Ihre personenbezogenen Daten werden möglicherweise an Hashicorp, den Lab-Sponsor, weitergegeben, wenn Sie in Ihrem Kontoprofil zugestimmt haben, Produktupdates, Mitteilungen und Angebote zu erhalten.
GSP751
Übersicht
Beim Verwalten Ihrer Infrastruktur mit Terraform entstehen immer komplexere Konfigurationen. Die Komplexität einer Terraform-Konfigurationsdatei oder eines Terraform-Verzeichnisses ist nicht beschränkt, daher können Sie in einem einzigen Verzeichnis immer weitere Konfigurationsdateien erstellen und diese aktualisieren. Diese Vorgehensweise kann jedoch zu den folgenden Problemen führen:
- Es wird immer schwieriger, den Überblick über die Konfigurationsdateien zu behalten.
- Das Aktualisieren der Konfiguration wird riskanter, da Änderungen an einem Block unbeabsichtigte Folgen für andere Konfigurationsblöcke haben können.
- Es kann zu mehr Duplikaten ähnlicher Konfigurationsblöcke kommen, beispielsweise wenn Sie separate Entwicklungs‑, Staging‑ und Produktionsumgebungen konfigurieren. Diese Teile der Konfiguration zu aktualisieren, kann kompliziert sein.
- Wenn Sie Elemente der Konfiguration zwischen Projekten und Teams teilen möchten, kann das Ausschneiden und Einfügen von Konfigurationsblöcken zu Fehlern führen und umständlich sein.
In diesem Lab lernen Sie, wie sich diese Probleme durch Module lösen lassen, welche Struktur Terraform-Module haben sowie welche Best Practices für das Verwenden und Erstellen von Modulen gelten.
Wozu dienen Module?
Module können die oben beschriebenen Probleme auf verschiedene Weise lösen:
-
Konfiguration strukturieren: Module erleichtern die Navigation in der Konfiguration, das Verständnis dafür sowie deren Aktualisierung, indem zusammengehörende Teile miteinander verbunden werden. Selbst eine mäßig komplexe Infrastruktur kann Hunderte oder Tausende von Konfigurationszeilen erfordern. Mithilfe von Modulen können Sie die Konfiguration durch logische Komponenten strukturieren.
-
Konfiguration zusammenfassen: Ein weiterer Vorteil von Modulen ist das Zusammenfassen der Konfiguration in einzelnen logischen Komponenten. So lassen sich unbeabsichtigte Folgen verhindern, z. B. dass eine Änderung an einem Teil der Konfiguration versehentlich zu Änderungen an anderer Infrastruktur führt. Außerdem sinkt die Wahrscheinlichkeit einfacher Fehler wie der Verwendung desselben Namens für zwei verschiedene Ressourcen.
-
Konfiguration wiederverwenden: Die gesamte Konfiguration zu schreiben, ohne bereits vorhandenen Code zu verwenden, kann zeitaufwendig und fehleranfällig sein. Mit Modulen können Sie dagegen Zeit sparen und teure Fehler vermeiden, indem Sie Konfigurationen wiederverwenden, die von Ihnen selbst, Teammitgliedern oder anderen Terraform-Fachkräften geschrieben wurden, die Module veröffentlicht haben. Auch Sie können die von Ihnen geschriebenen Module für Ihr Team oder die Öffentlichkeit freigeben.
-
Für Konsistenz und die Anwendung von Best Practices sorgen: Module sorgen außerdem für mehr Konsistenz in Ihren Konfigurationen. Durch Konsistenz wird eine komplexe Konfiguration leichter verständlich und sie trägt dazu bei, dass Best Practices auf die gesamte Konfiguration angewendet werden. Cloud-Anbieter bieten beispielsweise verschiedene Möglichkeiten zum Konfigurieren von Objektspeicherdiensten wie Amazon S3 (Simple Storage Service) oder Cloud Storage-Buckets von Google. Viele aufsehenerregende Sicherheitsvorfälle sind auf nicht ausreichend geschützte Objektspeicher zurückzuführen. Angesichts der Vielzahl komplexer Konfigurationsoptionen kann es leicht passieren, dass diese Dienste falsch konfiguriert werden.
Durch Module lassen sich solche Fehler reduzieren. Sie können zum Beispiel ein Modul erstellen, um festzulegen, wie die öffentlichen Website-Buckets Ihres Unternehmens konfiguriert werden, und ein weiteres für private Buckets für Logging-Anwendungen. Wenn die Konfiguration eines Ressourcentyps aktualisiert werden muss, können Sie dieses Update mithilfe eines Moduls an einem Ort ausführen und es auf alle Bereiche anwenden lassen, in denen dieses Modul zum Einsatz kommt.
Lernziele
Aufgaben in diesem Lab:
- Modul aus der Registry verwenden
- Modul erstellen
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.
Was ist ein Terraform-Modul?
Ein Terraform-Modul ist eine Gruppe von Terraform-Konfigurationsdateien in einem Verzeichnis. Selbst eine einfache Konfiguration, die aus einem Verzeichnis mit einer oder mehreren .tf
‑Dateien besteht, ist ein Modul. Wenn Sie Terraform-Befehle direkt aus einem solchen Verzeichnis ausführen, gilt es als Stammmodul. In diesem Sinne ist jede Terraform-Konfiguration Teil eines Moduls. Vielleicht haben Sie einen einfachen Satz Terraform-Konfigurationsdateien wie diesen:
Wenn Sie Terraform-Befehle aus dem Verzeichnis minimal-module
ausführen, gilt der Inhalt dieses Verzeichnisses als Stammmodul.
Module aufrufen
Für Terraform-Befehle werden nur die Konfigurationsdateien aus einem Verzeichnis direkt verwendet. Dies ist üblicherweise das aktuelle Arbeitsverzeichnis. Ihre Konfiguration kann jedoch Modulblöcke verwenden, um Module aus anderen Verzeichnissen aufzurufen. Wenn Terraform einen Modulblock findet, lädt und verarbeitet es die Konfigurationsdateien dieses Moduls.
Ein Modul, das von einer anderen Konfiguration aufgerufen wird, wird manchmal als „untergeordnetes Modul“ dieser Konfiguration bezeichnet.
Lokale Module und Remotemodule
Module können entweder aus dem lokalen Dateisystem oder einer Remotequelle geladen werden. Terraform unterstützt verschiedene Remotequellen, einschließlich der Terraform Registry, der meisten Versionsverwaltungssysteme, HTTP-URLs sowie privater Terraform Cloud‑ oder Terraform Enterprise-Modul-Registries.
Best Practices für Module
Terraform-Module ähneln in vielerlei Hinsicht den Bibliotheken, Paketen oder Modulen der meisten Programmiersprachen und bieten ähnliche Vorzüge. Wie andere mehr oder weniger komplexe Computerprogramme sollten Terraform-Konfigurationen möglichst Module umfassen, um die oben genannten Vorteile zu ermöglichen.
Dafür werden die folgenden Best Practices empfohlen:
-
Planen Sie beim Schreiben Ihrer Konfiguration Module ein. Selbst bei nur wenig komplexen Terraform-Konfigurationen, die von einer Person verwaltet werden, überwiegen die Vorteile von Modulen den zeitlichen Aufwand, sie korrekt einzusetzen.
-
Verwenden Sie lokale Module, um Ihren Code zu strukturieren und zusammenzufassen. Selbst wenn Sie keine Remotemodule verwenden oder veröffentlichen, sinkt durch das Strukturieren der Konfiguration in Modulen von Anfang an der Aufwand für die Verwaltung und Aktualisierung der Konfiguration beträchtlich, wenn die Infrastruktur komplexer wird.
-
In der öffentlichen Terraform Registry finden Sie nützliche Module. So können Sie Ihre Konfiguration schnell und effektiv implementieren und sich dabei auf die Arbeit anderer stützen.
-
Veröffentlichen Sie Module und teilen Sie sie mit Ihrem Team. Infrastruktur wird meist von einem Team verwaltet und Module sind ein wichtiges Werkzeug, mit dem Teams Infrastruktur erstellen und verwalten können. Wie bereits erwähnt, können Sie Module öffentlich oder privat freigeben. Wie das funktioniert, erfahren Sie in einem anderen Lab dieser Reihe.
Aufgabe 1: Module aus der Registry verwenden
In diesem Abschnitt verwenden Sie Module aus der Terraform Registry, um eine Beispielumgebung in Google Cloud bereitzustellen. Die hier verwendeten Konzepte gelten für Module aus allen Quellen.
- Öffnen Sie die Terraform Registry-Seite für das Terraform-Modul „network“ in einem neuen Browsertab oder ‑fenster. Die Seite sieht so aus:
Die Seite enthält Informationen über das Modul und einen Link zum Quell-Repository. Auf der rechten Seite befinden sich ein Drop-down-Feld, in dem Sie die Modulversion auswählen können, sowie eine Anleitung zum Bereitstellen von Infrastruktur mit diesem Modul.
Zum Aufrufen eines Moduls wird das source
-Argument benötigt. In diesem Beispiel sucht Terraform in der Terraform Registry nach einem Modul, das mit dem angegebenen String übereinstimmt. Sie können aber auch eine URL oder einen lokalen Dateipfad als Quelle Ihrer Module verwenden. Eine Liste möglicher Modulquellen finden Sie in der Terraform-Dokumentation.
Das andere hier angezeigte Argument ist version
. Bei unterstützten Quellen können Sie darüber festlegen, welche Versionen des Moduls geladen werden sollen. In diesem Lab geben Sie eine genaue Versionsnummer für die verwendeten Module an. Weitere Möglichkeiten, Versionen festzulegen, finden Sie in der Dokumentation zu Modulen.
Andere Argumente für Modulblöcke werden als Eingabevariablen für die Module behandelt.
Terraform-Konfiguration erstellen
- Führen Sie zu Beginn die folgenden Befehle in Cloud Shell aus, um das einfache Beispielprojekt aus dem GitHub-Repository mit Terraform-Modulen von Google zu klonen und zum Zweig
v6.0.1
zu wechseln:
So wird sichergestellt, dass Sie die richtige Versionsnummer verwenden.
-
Klicken Sie in der Cloud Shell-Symbolleiste auf Editor öffnen. Wenn Sie zwischen Cloud Shell und dem Code-Editor wechseln möchten, klicken Sie auf Editor öffnen bzw. Terminal öffnen oder auf In neuem Fenster öffnen, damit der Editor in einem eigenen Tab geöffnet bleibt.
-
Wechseln Sie im Editor zu
terraform-google-network/examples/simple_project
und öffnen Sie die Dateimain.tf
. Ihremain.tf
-Konfiguration sieht so aus:
Diese Konfiguration beinhaltet einen wichtigen Block:
-
module "test-vpc-module"
definiert eine Virtual Private Cloud (VPC), die Netzwerkdienste für den Rest Ihrer Infrastruktur bereitstellt.
Werte für Moduleingabevariablen festlegen
Einige Eingabevariablen sind erforderlich, d. h., das Modul hat keinen Standardwert dafür. Sie müssen einen Wert festlegen, damit Terraform korrekt ausgeführt wird.
-
Prüfen Sie im Modulblock
"test-vpc-module"
die Eingabevariablen, die Sie festlegen. Diese sind in der Terraform Registry dokumentiert. Die erforderlichen Eingaben für dieses Modul lauten:-
network_name
: Der Name des Netzwerks, das erstellt wird -
project_id
: Die ID des Projekts, in dem die VPC erstellt wird -
subnets
: Die Liste der Subnetze, die erstellt werden
-
Damit Sie Module verwenden können, müssen Sie in der Regel Eingabevariablen an die Modulkonfiguration übergeben. Die Konfiguration, die ein Modul aufruft, muss die Eingabewerte festlegen, die als Argumente an den Modulblock übergeben werden. Abgesehen von source
und version
legen die meisten Argumente für einen Modulblock Variablenwerte fest.
Auf der Terraform Registry-Seite für das „network“-Modul von Google Cloud werden im Tab „Inputs“ (Eingaben) alle Eingabevariablen beschrieben, die dieses Modul unterstützt.
Stammeingabevariablen definieren
Der Einsatz von Eingabevariablen in Modulen ähnelt dem von Variablen in anderen Terraform-Konfigurationen. Eine gängige Vorgehensweise ist zu überlegen, welche Moduleingabevariablen Sie in Zukunft möglicherweise ändern möchten, und entsprechende Variablen in der Datei variables.tf
der Konfiguration mit sinnvollen Standardwerten zu erstellen. Diese Variablen können dann als Argumente an den Modulblock übergeben werden.
- Führen Sie den folgenden Befehl in Cloud Shell aus, um die Projekt‑ID abzurufen:
-
Öffnen Sie im Editor im selben Verzeichnis die Datei
variables.tf
. -
Ersetzen Sie die Variable
project_id
durch die Ausgabe des vorherigen Befehls. Dabei müssen Sie sich an das unten angegebene Format halten und dendefault
-Wert der Variablen festlegen:
- Fügen Sie die Variable
network_name
in die Dateivariables.tf
ein. Sie können den Namenexample-vpc
oder einen beliebigen anderen verwenden. Dabei müssen Sie sich an das unten angegebene Format halten und dendefault
-Wert der Variablen festlegen:
- Aktualisieren Sie in der Datei
main.tf
den Parameternetwork_name
, um die Variable zu verwenden, die Sie gerade definiert haben, indem Sie den Wert aufvar.network_name
setzen.
- Ändern Sie in der Datei
main.tf
die Subnetzregionen in den Zeilen 35, 40 und 47 vonus‑west1
in. So stellen Sie sicher, dass die Subnetze in der zulässigen Region Ihres Projekts erstellt werden. Das Modul sollte nun so aussehen:
Stammausgabewerte definieren
Module haben auch Ausgabewerte, die im Modul mit dem Stichwort output
definiert werden. Mithilfe von module.<MODULE NAME>.<OUTPUT NAME>
können Sie darauf zugreifen. Modulausgaben werden in der Terraform Registry im Tab Outputs
(Ausgaben) aufgeführt.
Modulausgaben werden in der Regel entweder an andere Teile der Konfiguration übergeben oder als Ausgaben im Stammmodul definiert. In diesem Lab lernen Sie beide Verwendungsmöglichkeiten kennen.
- Öffnen Sie die Datei
outputs.tf
im Verzeichnis Ihrer Konfiguration. Prüfen Sie, ob die Datei Folgendes enthält:
Infrastruktur bereitstellen
- Wechseln Sie in Cloud Shell zum Verzeichnis
simple_project
:
- Initialisieren Sie Ihre Terraform-Konfiguration:
- Erstellen Sie die VPC:
- Beantworten Sie den Prompt mit yes, um die Änderungen anzuwenden und fortzufahren.
Sehr gut. Sie haben Ihr erstes Modul verwendet. Die Ausgabe Ihrer Konfiguration sollte so aussehen:
Funktionsweise von Modulen
Wenn Sie ein neues Modul zum ersten Mal verwenden, müssen Sie entweder terraform init
oder terraform get
ausführen, um das Modul zu installieren. Wird einer dieser Befehle ausgeführt, installiert Terraform neue Module im Verzeichnis .terraform/modules
im Arbeitsverzeichnis Ihrer Konfiguration. Für lokale Module erstellt Terraform einen Symlink zum Verzeichnis des Moduls. Aus diesem Grund sind Änderungen an lokalen Modulen sofort wirksam, ohne dass Sie terraform get
erneut ausführen müssen.
Infrastruktur bereinigen
Jetzt wissen Sie, wie Module aus der Terraform Registry verwendet werden, wie Sie diese Module mit Eingabevariablen konfigurieren und wie Sie Ausgabewerte aus diesen Modulen erhalten.
- Löschen Sie die erstellte Infrastruktur:
-
Beantworten Sie den Prompt mit
yes
. Terraform löscht die von Ihnen erstellte Infrastruktur. -
Löschen Sie anschließend auch den Ordner
terraform-google-network
.
Klicken Sie auf Fortschritt prüfen.
Aufgabe 2: Modul erstellen
In der letzten Aufgabe haben Sie ein Modul aus der Terraform Registry verwendet, um ein VPC‑Netzwerk in Google Cloud zu erstellen. Vorhandene Terraform-Module korrekt einzusetzen, ist eine wichtige Fähigkeit, aber jede Terraform-Fachkraft sollte auch wissen, wie Module erstellt werden. Sie sollten jede Terraform-Konfiguration unter der Annahme erstellen, dass sie als Modul verwendet wird. So werden Ihre Konfigurationen flexibel, wiederverwendbar und zusammensetzbar.
Wie Sie wahrscheinlich bereits wissen, behandelt Terraform jede Konfiguration als Modul. Wenn Sie terraform
-Befehle ausführen oder Terraform Cloud bzw. Terraform Enterprise nutzen, um Terraform remote auszuführen, fungiert das Zielverzeichnis, das die Terraform-Konfiguration enthält, als Stammmodul.
In dieser Aufgabe erstellen Sie ein Modul zum Verwalten von Cloud Storage-Buckets für das Hosten statischer Websites.
Modulstruktur
Terraform behandelt lokale Verzeichnisse, auf die im source
-Argument eines module
-Blocks verwiesen wird, als Modul. Eine typische Dateistruktur eines neuen Moduls sieht so aus:
.tf
‑Datei erstellen oder eine beliebige andere Dateistruktur verwenden.
Jede dieser Dateien dient einem bestimmten Zweck:
-
LICENSE
enthält die Lizenz, unter der Ihr Modul bereitgestellt wird. Wenn Sie das Modul freigeben, finden andere Nutzer in der LICENSE-Datei die Bedingungen, zu der es verfügbar gemacht wurde. Terraform verwendet diese Datei nicht. -
README.md
enthält eine Dokumentation im Markdown-Format, in der die Nutzung des Moduls beschrieben wird. Terraform verwendet diese Datei nicht, aber in Diensten wie Terraform Registry und GitHub wird ihr Inhalt Besuchern der Terraform Registry‑ oder GitHub-Seite des Moduls angezeigt. -
main.tf
enthält die wichtigsten Konfigurationen des Moduls. Sie können auch noch weitere Konfigurationsdateien erstellen und sie so organisieren, wie es zu Ihrem Projekt passt. -
variables.tf
enthält die Variablendefinitionen für das Modul. Wenn das Modul von anderen Nutzern verwendet wird, werden die Variablen im Modulblock als Argumente konfiguriert. Weil alle Terraform-Werte definiert sein müssen, werden alle Variablen, die keinen Standardwert haben, erforderliche Argumente. Eine Variable mit einem Standardwert kann aber auch als Modulargument bereitgestellt werden, wodurch der Standardwert überschrieben wird. -
outputs.tf
enthält die Ausgabedefinitionen für das Modul. Modulausgaben werden für die Konfiguration verfügbar gemacht, die das Modul verwendet. Sie dienen häufig dazu, Informationen zu den Teilen der Infrastruktur, die durch das Modul definiert sind, an andere Teile der Konfiguration zu übergeben.
Achten Sie darauf, diese Dateien nicht als Teil des Moduls bereitzustellen:
- Die Dateien
terraform.tfstate
undterraform.tfstate.backup
enthalten Informationen zum Terraform-Zustand. Damit verfolgt Terraform die Beziehung zwischen der Konfiguration und der dadurch bereitgestellten Infrastruktur. - Das Verzeichnis
.terraform
enthält die Module und Plug‑ins zum Bereitstellen der Infrastruktur. Diese Dateien beziehen sich auf eine einzelne Terraform-Instanz beim Bereitstellen von Infrastruktur, nicht auf die Konfiguration der Infrastruktur, die in.tf
‑Dateien definiert ist. -
*.tfvars
‑Dateien müssen nicht zusammen mit dem Modul bereitgestellt werden, außer Sie verwenden es auch als eigenständige Terraform-Konfiguration, denn Moduleingabevariablen werden für den Modulblock in der Konfiguration mithilfe von Argumenten festgelegt.
Modul erstellen
Wechseln Sie ins Basisverzeichnis und erstellen Sie ein Stammmodul, indem Sie eine neue main.tf
‑Konfigurationsdatei anlegen. Erstellen Sie als Nächstes ein Verzeichnis namens modules, das einen Ordner mit der Bezeichnung gcs-static-website-bucket
enthält. Sie arbeiten im Verzeichnis gcs-static-website-bucket
mit drei Terraform-Konfigurationsdateien: website.tf
, variables.tf
und outputs.tf
.
- Erstellen Sie das Verzeichnis für das neue Modul:
- Rufen Sie das Modulverzeichnis auf und führen Sie die folgenden Befehle aus, um drei leere Dateien zu erstellen:
- Führen Sie im Verzeichnis
gcs-static-website-bucket
den folgenden Befehl aus, um die DateiREADME.md
mit diesem Inhalt zu erstellen:
- Erstellen Sie eine weitere Datei namens
LICENSE
mit folgendem Inhalt:
Die Verzeichnisstruktur Ihres Moduls sollte nun so aussehen:
- Fügen Sie diese Cloud Storage-Bucket-Ressource der Datei
website.tf
im Verzeichnismodules/gcs-static-website-bucket
hinzu:
Die Dokumentation des Anbieters finden Sie bei GitHub.
- Rufen Sie die Datei
variables.tf
im Modul auf und fügen Sie folgenden Code hinzu:
- Fügen Sie in der Moduldatei
outputs.tf
eine Ausgabe zum Modul hinzu:
Wie Variablen haben auch Ausgaben in Modulen dieselbe Funktion wie im Stammmodul, aber der Zugriff erfolgt auf andere Weise. Auf die Ausgaben eines Moduls können Sie als schreibgeschützte Attribute im Modulobjekt zugreifen, das in der Konfiguration verfügbar ist, die das Modul aufruft.
- Kehren Sie zur Datei
main.tf
im Stammverzeichnis zurück und fügen Sie einen Verweis auf das neue Modul hinzu:
- Erstellen Sie im Stammverzeichnis die Datei
outputs.tf
für das Stammmodul:
- Fügen Sie in der Datei
outputs.tf
den folgenden Code hinzu:
- Erstellen Sie im Stammverzeichnis die Datei
variables.tf
:
- Fügen Sie der Datei
variables.tf
den folgenden Code hinzu. Setzen Sie die Variablenproject_id
undname
standardmäßig auf die Projekt-ID.
Lokales Modul installieren
Wenn Sie einer Konfiguration ein neues Modul hinzufügen, muss Terraform dieses erst installieren, bevor es verwendet werden kann. Mit den Befehlen terraform get
und terraform init
werden Module installiert und aktualisiert. Durch den Befehl terraform init
werden außerdem Backends initialisiert und Plug‑ins installiert.
- Installieren Sie das Modul:
- Stellen Sie den Bucket bereit:
- Beantworten Sie den Prompt mit yes. Der Bucket und andere Ressourcen werden bereitgestellt.
Dateien in den Bucket hochladen
Sie haben jetzt ein eigenes Modul konfiguriert und es verwendet, um eine statische Website zu erstellen. Vielleicht möchten Sie die statische Website besuchen. Im Moment ist der Bucket leer, daher ist auf der Website nichts zu sehen. Sie müssen Objekte in den Bucket hochladen, um die Website mit Inhalten zu füllen. Sie können den Inhalt des Verzeichnisses www
aus dem GitHub-Repository hochladen.
- Laden Sie den Beispielinhalt in Ihr Basisverzeichnis herunter:
- Kopieren Sie die Dateien in den Bucket und ersetzen Sie dabei
YOUR-BUCKET-NAME
durch den Namen Ihres Speicher-Buckets:
- Rufen Sie in einem neuen Browsertab die Website
https://storage.cloud.google.com/YOUR-BUCKET-NAME/index.html
auf und ersetzen Sie dabeiYOUR-BUCKET-NAME
durch den Namen Ihres Speicher-Buckets.
Ihnen sollte eine einfache HTML-Webseite angezeigt werden, auf der Nothing to see here steht.
Klicken Sie auf Fortschritt prüfen.
Website und Infrastruktur bereinigen
Zum Schluss bereinigen Sie das Projekt, indem Sie die erstellte Infrastruktur wieder löschen.
- Löschen Sie Ihre Terraform-Ressourcen:
Nachdem Sie den Prompt mit yes
beantwortet haben, löscht Terraform alle Ressourcen, die Sie im Laufe dieses Labs erstellt haben.
Das wars! Sie haben das Lab erfolgreich abgeschlossen.
In diesem Lab haben Sie die Grundlagen von Terraform-Modulen kennengelernt und erfahren, wie Sie ein vorhandenes Modul aus der Registry verwenden. Dann haben Sie ein eigenes Modul für eine statische Website erstellt, die in einem Cloud Storage-Bucket gehostet wird. Dabei haben Sie Eingaben, Ausgaben und Variablen für die Konfigurationsdateien definiert und die Best Practices für das Erstellen von Modulen kennengelernt.
Nächste Schritte / Weitere Informationen
Unter diesen Links finden Sie weitere praxisorientierte Übungen mit 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 11. Dezember 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.