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.
  • 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.

  1. Navigieren Sie zu dem Verzeichnis, unter dem ein neues Verzeichnis erstellt werden soll.

  2. 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>
    

    mkdir

  3. Navigieren Sie zu dem neuen Verzeichnis:

    cd <new-directory-name>
    

    Navigate to your new directory

3. Erstellen einer Basismodulvorlage

  1. Führen Sie den folgenden Befehl aus:

    yo az-terra-module
    
  2. 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.

      Project name

    • Möchten Sie die Docker-Imagedatei einbeziehen? Geben Sie y ein. Wenn Sie n eingeben, unterstützt der generierte Modulcode nur die Ausführung im nativen Modus.

      Include Docker image file?

  3. Listen Sie die Verzeichnisinhalte auf, um die erstellten resultierenden Dateien anzuzeigen:

    ls
    

    List created files

4. Überprüfen des generierte Modulcodes

  1. Starten Sie Visual Studio Code.

  2. Wählen Sie in der Menüleiste "Ordner öffnen" > aus, und wählen Sie den ordner aus, den Sie erstellt haben.

    Visual Studio Code

Vom Yeoman-Modulgenerator wurden folgende Dateien erstellt:

  • main.tf: Definiert ein Modul namens random-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 von random_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 fixturedefinierten Elemente bereitzustellen. Die Ergebnisse in der Datei template_output.go werden mit den vordefinierten erwarteten Werten verglichen.
    • Gopkg.lock und Gopkg.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.

Docker version

Die resultierende Ausgabe bestätigt, dass Docker installiert ist.

Um zu bestätigen, dass Docker wirklich ausgeführt wird, geben Sie docker info ein.

Docker info

Einrichten eines Docker-Containers

  1. 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.

    Message indicating a successful build

  2. Geben Sie an der Eingabeaufforderung docker image ls ein. Daraufhin wird das erstellte Modul terra-mod-example aufgelistet.

    List containing the new module

  3. Geben Sie docker run -it terra-mod-example /bin/sh ein. Nachdem Sie den docker run Befehl ausgeführt haben, befinden Sie sich in der Docker-Umgebung. Nun können Sie die Datei mithilfe des Befehls ls ermitteln.

    File list in Docker

Erstellen des Moduls

  1. Führen Sie den folgenden Befehl aus:

    bundle install
    
  2. Führen Sie den folgenden Befehl aus:

    rake build
    

    Rake build

Durchführen des End-to-End-Tests

  1. Führen Sie den folgenden Befehl aus:

    rake e2e
    
  2. Nach einigen Augenblicken wird die Meldung ERFOLGREICH angezeigt.

    PASS

  3. 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.

  1. Starten Sie eine Azure Cloud Shell-Sitzung entweder über das Azure-Portal, über shell.azure.com oder über die mobile Azure-App.

  2. Die Seite Willkommen bei Azure Cloud Shell wird geöffnet. Wählen Sie Bash (Linux) aus.

    Welcome to Azure Cloud Shell

  3. Wenn Sie noch kein Azure-Speicherkonto eingerichtet haben, wird folgender Bildschirm angezeigt. Klicken Sie auf Speicher erstellen.

    You have no storage mounted

  4. 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.

    Your cloud drive has been created

Vorbereiten eines Verzeichnisses für Ihr Terraform-Modul

  1. 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.

  2. Erstellen Sie das $GOPATH Verzeichnis, sofern noch kein Verzeichnis vorhanden ist: Geben Sie die EINGABETASTE mkdir ~/goein.

  3. 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
    
  4. 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>
    
  5. Navigieren Sie zu Ihrem Modulverzeichnis:

    cd ~/go/src/<your-module-name>
    

Erstellen und Testen Ihres Terraform-Moduls

  1. 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
    
  2. Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren:

    bundle install
    
  3. Führen Sie den folgenden Befehl aus, um das Modul zu erstellen:

    rake build
    

    Rake build

  4. Führen Sie den folgenden Befehl aus, um den Test auszuführen:

    rake e2e
    

    Test-pass results

Problembehandlung für Terraform in Azure

Behandeln allgemeiner Probleme bei der Verwendung von Terraform in Azure

Nächste Schritte