Erstellen einer Terraform-Basisvorlage in Azure mithilfe von Yeoman
Mit Terraform können Sie eine Cloudinfrastruktur definieren, eine Vorschau der Cloudinfrastruktur anzeigen und die Cloudinfrastruktur bereitstellen. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter (beispielsweise Azure) und die Elemente angeben, aus denen sich Ihre Cloudinfrastruktur zusammensetzt. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nach der Überprüfung der Änderungen wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.
In diesem Artikel erfahren Sie, wie Sie Terraform und Yeoman zusammen verwenden. Terraform ist ein Tool für die Infrastrukturerstellung in Azure. Yeoman erleichtert die Erstellung von Terraform-Modulen.
In diesem Artikel lernen Sie Folgendes:
- Erstellen Sie eine Terraform-Basisvorlage mithilfe des Yeoman-Modulgenerators
- Testen der Terraform-Vorlage mit zwei verschiedenen Methoden
- Ausführen des Terraform-Moduls unter Verwendung einer Docker-Datei
- Natives Ausführen des Terraform-Moduls in Azure Cloud Shell
1. Konfigurieren Ihrer Umgebung
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Konfigurieren von Terraform: Konfigurieren Sie Terraform mithilfe einer der folgenden Optionen, sofern noch nicht geschehen:
Visual Studio Code: Laden Sie Visual Studio Code für Ihre Plattform herunter.
Docker: Installieren Sie Docker, um das vom Yeoman-Generator erstellte Modul auszuführen.
Programmiersprache go: Installieren Von Go als yeoman-generierte Testfälle sind Code mit der Go-Sprache.
Nodejs:Install Node.js
Installieren von Yeoman: Führen Sie den folgenden Befehl aus:
npm install -g yo
.Yeoman-Vorlage: Führen Sie den folgenden Befehl aus, um die Yeoman-Vorlage für das Terraform-Modul zu installieren:
npm install -g generator-az-terra-module
.
2. Erstellen eines Verzeichnisses für das von Yeoman generierte Modul
Die Yeoman-Vorlage generiert Dateien im aktuellen Verzeichnis. Aus diesem Grund müssen Sie ein Verzeichnis erstellen.
Dieses leere Verzeichnis muss unter „$GOPATH/src“ erstellt werden. Weitere Informationen zu diesem Pfad finden Sie im Artikel Festlegen von GOPATH.
Navigieren Sie zu dem Verzeichnis, unter dem ein neues Verzeichnis erstellt werden soll.
Führen Sie den folgenden Befehl aus, und ersetzen Sie dabei den Platzhalter. In diesem Beispiel wird der Verzeichnisname
GeneratorDocSample
verwendet.mkdir <new-directory-name>
Navigieren Sie zu dem neuen Verzeichnis:
cd <new-directory-name>
3. Erstellen einer Basismodulvorlage
Führen Sie den folgenden Befehl aus:
yo az-terra-module
Führen Sie die Anweisungen auf dem Bildschirm aus, um die folgenden Informationen anzugeben:
Terraform module project Name (Name des Terraform-Modulprojekts): In diesem Beispiel wird
doc-sample-module
verwendet.Möchten Sie die Docker-Imagedatei einbeziehen? Geben Sie
y
ein. Wenn Sien
eingeben, unterstützt der generierte Modulcode nur die Ausführung im nativen Modus.
Listen Sie die Verzeichnisinhalte auf, um die erstellten resultierenden Dateien anzuzeigen:
ls
4. Überprüfen des generierte Modulcodes
Starten Sie Visual Studio Code.
Wählen Sie in der Menüleiste "Ordner öffnen" > aus, und wählen Sie den ordner aus, den Sie erstellt haben.
Vom Yeoman-Modulgenerator wurden folgende Dateien erstellt:
main.tf
: Definiert ein Modul namensrandom-shuffle
. Die Eingabe ist eine Zeichenfolgenliste (string_list
). Die Ausgabe ist die Anzahl der Permutationen.variables.tf
: Definiert die vom Modul verwendeten Eingabe- und Ausgabevariablen.outputs.tf
: Definiert die Ausgabe des Moduls. Hier ist es der vonrandom_shuffle
zurückgegebene Wert (ein integriertes Terraform-Modul).Rakefile
: Definiert die Schritte im Buildprozess. Zu diesen Schritten gehören:build
: Überprüft die Formatierung der Datei „main.tf“.unit
: Das generierte Modulgerüst enthält keinen Code für einen Komponententest. Wenn Sie ein Komponententestszenario angeben möchten, fügen Sie diesen Code hier hinzu.e2e
: Führt einen End-to-End-Test des Moduls aus.
test
- Testfälle werden in Go geschrieben.
- Alle Codes im Test sind End-to-End-Tests.
- Bei End-to-End-Tests wird versucht, alle unter
fixture
definierten Elemente bereitzustellen. Die Ergebnisse in der Dateitemplate_output.go
werden mit den vordefinierten erwarteten Werten verglichen. Gopkg.lock
undGopkg.toml
: Definiert die Abhängigkeiten.
Weitere Informationen zum Yeoman-Generator für Azure (https://github.com/Azure/generator-az-terra-module) finden Sie in der Terratest-Dokumentation.
5. Ausführen des Terraform-Moduls unter Verwendung einer Docker-Datei
In diesem Abschnitt erfahren Sie, wie Sie ein Terraform-Modul mithilfe einer Docker-Datei testen.
Hinweis
Das Modul wird in diesem Beispiel nicht in Azure, sondern lokal ausgeführt.
Bestätigen, dass Docker installiert ist und ausgeführt wird
Geben Sie an einer Befehlszeile docker version
ein.
Die resultierende Ausgabe bestätigt, dass Docker installiert ist.
Um zu bestätigen, dass Docker wirklich ausgeführt wird, geben Sie docker info
ein.
Einrichten eines Docker-Containers
Geben Sie an einer Eingabeaufforderung Folgendes ein:
docker build --build-arg BUILD_ARM_SUBSCRIPTION_ID= --build-arg BUILD_ARM_CLIENT_ID= --build-arg BUILD_ARM_CLIENT_SECRET= --build-arg BUILD_ARM_TENANT_ID= -t terra-mod-example .
.Die Nachricht Erfolgreich erstellt wird angezeigt.
Geben Sie an der Eingabeaufforderung
docker image ls
ein. Daraufhin wird das erstellte Modulterra-mod-example
aufgelistet.Geben Sie
docker run -it terra-mod-example /bin/sh
ein. Nachdem Sie dendocker run
Befehl ausgeführt haben, befinden Sie sich in der Docker-Umgebung. Nun können Sie die Datei mithilfe des Befehlsls
ermitteln.
Erstellen des Moduls
Führen Sie den folgenden Befehl aus:
bundle install
Führen Sie den folgenden Befehl aus:
rake build
Durchführen des End-to-End-Tests
Führen Sie den folgenden Befehl aus:
rake e2e
Nach einigen Augenblicken wird die Meldung ERFOLGREICH angezeigt.
Geben Sie
exit
ein, um den Test abzuschließen und die Docker-Umgebung zu beenden.
6. Verwenden des Yeoman-Generators zum Erstellen und Testen eines Moduls
In diesem Abschnitt wird zum Erstellen und Testen eines Moduls in Cloud Shell der Yeoman-Generator verwendet. Die Verwendung von Cloud Shell anstelle einer Docker-Datei vereinfacht den Prozess erheblich. Bei Verwendung von Cloud Shell sind die folgenden Produkte bereits vorinstalliert:
- Node.js
- Yeoman
- Terraform
Starten einer Cloud Shell-Sitzung.
Starten Sie eine Azure Cloud Shell-Sitzung entweder über das Azure-Portal, über shell.azure.com oder über die mobile Azure-App.
Die Seite Willkommen bei Azure Cloud Shell wird geöffnet. Wählen Sie Bash (Linux) aus.
Wenn Sie noch kein Azure-Speicherkonto eingerichtet haben, wird folgender Bildschirm angezeigt. Klicken Sie auf Speicher erstellen.
Azure Cloud Shell wird in der Shell gestartet, die Sie zuvor ausgewählt haben, und zeigt Informationen zu dem Cloudlaufwerk an, das gerade für Sie erstellt wurde.
Vorbereiten eines Verzeichnisses für Ihr Terraform-Modul
Zu diesem Zeitpunkt wurde GOPATH in Ihren Umgebungsvariablen bereits von Cloud Shell für Sie konfiguriert. Geben Sie zum Anzeigen des Pfads
go env
ein.Erstellen Sie das $GOPATH Verzeichnis, sofern noch kein Verzeichnis vorhanden ist: Geben Sie die EINGABETASTE
mkdir ~/go
ein.Erstellen Sie ein Verzeichnis innerhalb des Verzeichnisses „$GOPATH“. In diesem Verzeichnis werden die verschiedenen Projektverzeichnisse platziert, die in diesem Beispiel erstellt werden.
mkdir ~/go/src
Erstellen Sie ein Verzeichnis für Ihr Terraform-Modul, und ersetzen Sie dabei den Platzhalter. In diesem Beispiel wird der Verzeichnisname
my-module-name
verwendet.mkdir ~/go/src/<your-module-name>
Navigieren Sie zu Ihrem Modulverzeichnis:
cd ~/go/src/<your-module-name>
Erstellen und Testen Ihres Terraform-Moduls
Führen Sie den folgenden Befehl aus, und befolgen Sie die Anweisungen. Wenn Sie gefragt werden, ob Sie die Docker-Dateien erstellen möchten, geben Sie
N
ein.yo az-terra-module
Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren:
bundle install
Führen Sie den folgenden Befehl aus, um das Modul zu erstellen:
rake build
Führen Sie den folgenden Befehl aus, um den Test auszuführen:
rake e2e
Problembehandlung für Terraform in Azure
Behandeln allgemeiner Probleme bei der Verwendung von Terraform in Azure
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für