Anwenden eines automatisierten Workflows

Abgeschlossen

In dieser Lerneinheit erfahren Sie mehr über automatisierte Workflow-Tools und deren Integration in Terraform und Azure.

Grundlegende Informationen zu GitHub Actions

Da Sie für die Verwaltung der Infrastruktur zuständig sind, müssen Ihre Build- und Bereitstellungsworkflows dieselbe Versionskontrolle wie Ihr Projekt verwenden.

Durch die Verwendung von GitHub Actions können Sie einen CI/CD-Prozess (Continuous Integration und Continuous Delivery) ausführen, der mit Ihren GitHub-Repositorys verknüpft ist.

Mit GitHub Actions können Sie Ihren Code direkt in GitHub erstellen, testen und bereitstellen. Sie können auch Code Reviews zuweisen, Branches verwalten und Probleme selektieren.

GitHub Actions-Komponenten

Lassen Sie uns die verschiedenen Komponenten von GitHub Actions beschreiben, wie im folgenden Diagramm dargestellt:

Diagramm, das die Beziehung von GitHub Actions-Workflows zu Aufträgen, Schritten und Aktionen Ihrer Komponenten zeigt.

  • Workflow: Ausgelöst durch bestimmte Ereignisse oder Aktivitäten, ist ein Workflow eine Sammlung von Aufträgen und Schritten, die Aufgaben im Lebenszyklus der Softwareentwicklung automatisieren.
  • Auftrag: eine Reihe von Schritten, die auf einem Runner ausgeführt werden
  • Schritt: ein Task, der einen oder mehrere Befehle oder Aktionen ausführen kann. Jeder Schritt besteht aus einzelnen Aktionen, die nach einem bestimmten Ereignis (z. B. einem Pull Request) ausgeführt werden.
  • Aktion: eigenständige Befehle, die in Schritte kombiniert werden können. Mehrere Schritte können kombiniert werden, um einen Auftrag zu erstellen. Einzelne Aktionen sind gepackte Skripts, die Softwareentwicklungsaufgaben automatisieren. Zum Erstellen eines Workflows fügen Sie Aktionen zu einer YAML-Datei im Verzeichnis .github/workflows in Ihrem GitHub-Repository hinzu.

Eine Terraform-GitHub-Aktion

Mit der Aktion hashicorp/setup-terraform wird die Terraform-Befehlszeilenschnittstelle (CLI) in Ihrem GitHub Actions-Workflow eingerichtet, indem die folgenden Schritte ausgeführt werden:

  • Eine spezifische Version der Terraform-CLI wird heruntergeladen und zu PATH hinzugefügt.
  • Die Terraform-CLI-Konfigurationsdatei wird mit einem Terraform Cloud- oder Enterprise-Hostnamen und einem API-Token konfiguriert.
  • Ein Wrapperskript zum Umschließen späterer Aufrufe der terraform-Binärdatei und zum Bereitstellen von STDOUT, STDERR und des Exitcodes als Ausgaben mit den jeweiligen Namen stdout, stderr und exitcode wird installiert.

Authentifizieren von GitHub Actions bei Azure

Terraform unterstützt mehrere Optionen für die Authentifizierung bei Azure:

  • Wenn Sie Terraform interaktiv verwenden, empfehlen wir Ihnen, sich über ein Microsoft-Konto zu authentifizieren.
  • Wenn Sie Terraform aus dem Code heraus oder auf der Basis von Automatisierung verwenden, empfehlen wir, dass Sie sich über einen Azure Dienstprinzipal authentifizieren.

Ein Dienstprinzipal ist eine Identität, die für den Zugriff auf Azure-Ressourcen mit Anwendungen, gehosteten Diensten und automatisierten Tools erstellt wird.

Nächste Schritte

In der nächsten Lerneinheit richten Sie ein Beispielprojekt ein und verwenden GitHub Actions mit Terraform für die Bereitstellung in Azure.

Wichtige Konzepte für neue Azure Pipelines

Sehen wir uns die Komponenten an, die eine Azure Pipeline bilden.

Diagramm der wichtigsten Konzepte und Komponenten in Azure Pipeline

  • Ein Trigger weist eine Pipeline dazu an, ausgeführt zu werden.
  • Eine Pipeline besteht aus einer oder mehreren Phasen. Eine Pipeline kann in einer oder in mehreren Umgebungen bereitgestellt werden.
  • Eine Phase ist eine Möglichkeit zum Organisieren von Aufträgen in einer Pipeline. Jede Phase kann über einen oder mehrere Aufträge verfügen.
  • Jeder Auftrag wird auf einem Agent ausgeführt. Ein Auftrag kann auch ohne Agent erfolgen.
  • Jeder Agent führt einen Auftrag aus, der einen oder mehrere Schritte enthält.
  • Ein Schritt kann eine Aufgabe oder ein Skript sein und stellt den kleinsten Baustein einer Pipeline dar.
  • Bei einer Aufgabe handelt es sich um ein vorab gepacktes Skript, das eine Aktion durchführt, z. B. das Aufrufen einer REST-API oder das Veröffentlichen eines Buildartefakts.
  • Ein Artefakt ist eine Sammlung von Dateien oder Paketen, die beim Ausführen veröffentlicht werden.

Tipp

Ausführlichere Informationen zu den verschiedenen Pipeline-Komponenten und deren Verwendung finden Sie unter den Links im Abschnitt Zusammenfassung.

Terraform-Aufgaben für Azure Pipelines

Beim Ausführen von Befehlen, die mit Azure interagieren, z. B. plan, apply und destroy verwendet die Aufgabe eine Azure-Dienstverbindung, um Vorgänge für das Ziel-Abonnement zu autorisieren. Die empfohlene Methode zum Herstellen einer Verbindung mit Azure besteht darin, die Dienstverbindung an einen Azure-Dienstprinzipal zu binden. Ein Azure-Dienstprinzipal ist eine Identität, die Sie für den Zugriff auf Azure-Ressourcen mit Anwendungen, gehosteten Diensten und automatisierten Tools erstellen.

Der folgende YAML-Codeausschnitt verwendet den Azure Pipeline-Terraform-Anbieter azurerm. Eine Dienstverbindung wird über die environmentServiceNameAzureRM-Eingabe angegeben:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Tipp

Wenn Sie azurerm als Azure Pipeline-Terraform-Anbieter verwenden, müssen Sie auch eine Dienstverbindung und einen Speichercontainer zur Verwendung mit dem Terraform-Back-End-Zustand bereitstellen.

Übergeben von Parametern

Es gibt mehrere Methoden zum Übergeben von Parametern an Terraform-Befehle. Variablen stellen eine bequeme Möglichkeit dar, wichtige Bits von Daten in verschiedene Teile der Pipeline zu übernehmen.

Sie können eine Variable für eine Buildpipeline festlegen, indem Sie die folgenden Schritte ausführen:

  1. Wechseln Sie zur Seite Pipelines, wählen Sie die entsprechende Pipeline aus, und klicken Sie auf Bearbeiten.
  2. Suchen Sie die Variablen für diese Pipeline.
  3. Fügen Sie die Variable hinzu oder aktualisieren Sie sie.
  4. Um die Variable als geheim zu markieren, wählen Sie Diesen Wert geheim halten.
  5. Speichern Sie die Pipeline.

Terraform-Ausgabe an Pipelinevariablen

Die TerraformCLI-Aufgabe unterstützt die Ausführung des Terraform output-Befehls. Wenn die CLI ausgeführt wird, werden Pipeline-Variablen aus jeder Ausgabevariablen erstellt, die vom terraform output-Befehl ausgegeben wird.

Nächste Schritte

In der nächsten Lerneinheit richten Sie ein Beispielprojekt ein und verwenden Azure Pipelines mit Terraform für die Bereitstellung in Azure.