Bereitstellen von ARM-Vorlagen mithilfe von GitHub Actions

Bei GitHub Actions handelt es sich um eine Featuresammlung in GitHub, mit der sich Ihre Softwareentwicklungsworkflows am selben Ort automatisieren lassen, an dem Sie auch den Code speichern und gemeinsam an Pull Requests und Problemen arbeiten.

Verwenden Sie die Aktion zum Bereitstellen einer Azure Resource Manager-Vorlage, um die Bereitstellung einer Azure Resource Manager-Vorlage (ARM-Vorlage) in Azure zu automatisieren.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

  • Ein GitHub-Konto. Falls Sie noch nicht über ein Konto verfügen, können Sie sich kostenlos registrieren.

    • Ein GitHub-Repository, in dem Sie Ihre Resource Manager-Vorlagen und Ihre Workflowdateien speichern können. Informationen zum Erstellen eines neuen Repositorys finden Sie in diesem Hilfeartikel.

Übersicht über die Workflowdatei

Ein Workflow wird durch eine YAML-Datei im Pfad /.github/workflows/ in Ihrem Repository definiert. Diese Definition enthält die verschiedenen Schritte und Parameter, die den Workflow bilden.

Die Datei besteht aus zwei Abschnitten:

`Section` Aufgaben
Authentifizierung 1. Generieren von Anmeldeinformationen für die Bereitstellung.
Bereitstellen 1. Bereitstellen der Resource Manager-Vorlage

Generieren von Anmeldeinformationen für die Bereitstellung

Generieren Sie in der Azure CLI mit dem Befehl az ad sp create-for-rbac einen Dienstprinzipal. Führen Sie diesen Befehl mit Azure Cloud Shell im Azure-Portal oder durch Auswählen der Schaltfläche Ausprobieren aus.

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

Der Parameter --json-auth ist in Azure CLI-Versionen >= 2.51.0 verfügbar. Frühere Versionen nutzen --sdk-auth mit einer Einstellungswarnung.

Ersetzen Sie im obigen Beispiel die Platzhalter durch Ihre Abonnement-ID, den Ressourcengruppennamen und den App-Namen. Die Ausgabe ist ein JSON-Objekt mit den Anmeldeinformationen für die Rollenzuweisung, die ähnlich wie unten Zugriff auf Ihre App Service-App gewähren. Kopieren Sie dieses JSON-Objekt zur späteren Verwendung.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Konfigurieren der GitHub-Geheimnisse

  1. Wechseln Sie in GitHub zu Ihrem Repository.

  2. Gehen Sie im Navigationsmenü auf Einstellungen.

  3. Wählen Sie Security > Secrets and variables > Actions (Sicherheit > Geheimnisse und Variablen > Aktionen) aus.

    Screenshot of adding a secret

  4. Wählen Sie New repository secret (Neues Repositorygeheimnis) aus.

  5. Fügen Sie die gesamte JSON-Ausgabe aus dem Azure CLI-Befehl in das Wertfeld des Geheimnisses ein. Geben Sie dem Geheimnis den Namen AZURE_CREDENTIALS.

  6. Klicken Sie auf Add secret (Geheimnis hinzufügen).

Hinzufügen von Resource Manager-Vorlagen

Fügen Sie Ihrem GitHub-Repository eine Resource Manager-Vorlage hinzu. Mithilfe dieser Vorlage wird ein Speicherkonto erstellt.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

Sie können die Datei an einer beliebigen Stelle im Repository ablegen. Im Workflowbeispiel im nächsten Abschnitt wird davon ausgegangen, dass die Vorlagendatei azuredeploy.json heißt und im Repositorystamm gespeichert ist.

Erstellen des Workflows

Die Workflowdatei muss am Repositorystamm im Ordner .github/workflows gespeichert werden. Die Erweiterung der Workflowdatei kann entweder .yml oder .yaml lauten.

  1. Klicken Sie in Ihrem GitHub-Repository im oberen Menü auf Actions (Aktionen).
  2. Klicken Sie auf New workflow (Neuer Workflow).
  3. Klicken Sie auf set up a workflow yourself (Workflow selbst einrichten).
  4. Benennen Sie die Workflowdatei um, wenn Sie einen anderen Namen als main.yml bevorzugen. Beispiel: deployStorageAccount.yml
  5. Ersetzen Sie den Inhalt dieser YML-Datei durch den folgenden Code:
  on: [push]
  name: Azure ARM
  jobs:
    build-and-deploy:
      runs-on: ubuntu-latest
      steps:

        # Checkout code
      - uses: actions/checkout@main

        # Log into Azure
      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

        # Deploy ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

Hinweis

Sie können in der ARM-Bereitstellungsaktion stattdessen eine Parameterdatei im JSON-Format angeben (Beispiel: .azuredeploy.parameters.json).

Der erste Abschnitt der Workflowdatei enthält Folgendes:

  • name: Der Name des Workflows.
  • on: Der Name der GitHub-Ereignisse, die den Workflow auslösen. Der Workflow wird ausgelöst, wenn ein Pushereignis für den Hauptbranch auftritt, durch das mindestens eine der beiden angegebenen Dateien geändert wird. Bei den beiden Dateien handelt es sich um die Workflow- und die Vorlagendatei.
  1. Klicken Sie auf Start commit (Commit starten).
  2. Wählen Sie Direkten Commit zum Hauptbranch ausführen aus.
  3. Klicken Sie auf Commit new file (Neue Datei committen) (oder Commit changes [Änderungen committen]).

Da der Workflow so konfiguriert ist, dass er entweder von der Workflow- oder der Vorlagendatei ausgelöst wird, die gerade aktualisiert wird, startet der Workflow direkt nach dem Committen der Änderungen.

Überprüfen des Workflowstatus

  1. Klicken Sie auf die Registerkarte Actions (Aktionen). Ihnen wird der Workflow Create deployStorageAccount.yml (deployStorageAccount.yml erstellen) angezeigt. Die Ausführung des Workflows dauert 1–2 Minuten.
  2. Klicken Sie auf den Workflow, um ihn zu öffnen.
  3. Wählen Sie im Menü die Option Run ARM deploy (ARM-Bereitstellung ausführen) aus, um die Bereitstellung zu überprüfen.

Bereinigen von Ressourcen

Wenn Ihre Ressourcengruppe und das Repository nicht mehr benötigt werden, bereinigen Sie die bereitgestellten Ressourcen, indem Sie die Ressourcengruppe und Ihr GitHub-Repository löschen.

Nächste Schritte