Veröffentlichen von Bicep-Code aus einem Bereitstellungsworkflow

Abgeschlossen

Wenn Sie den Veröffentlichungsprozess für eine Vorlagenspezifikation oder ein Bicep-Modul automatisieren, müssen Sie sicherstellen, dass alles, was Sie normalerweise selbst tun, automatisiert und innerhalb des Workflows ausgeführt werden kann. In dieser Lerneinheit erfahren Sie, wie Sie einige der Prinzipien anwenden, die Sie zuvor kennengelernt haben, wenn Sie Vorlagenspezifikationen und Bicep-Module aus einem Bereitstellungsworkflow veröffentlichen.

Vorlagenspezifikationen und Module

Mit Bicep können Sie Ihren Code einfach wiederverwenden. Zwei allgemeine Ansätze zum erneuten Verwenden Ihres Bicep-Codes in allen Bereitstellungen sind:

  • Vorlagenspezifikationen, die für die Bereitstellung vollständiger Lösungen optimiert sind. Angenommen, Sie haben eine Reihe von sicherheitsgehärteten Ressourcen definiert, um einen vollständigen virtuellen Computer gemäß den Spezifikationen Ihres Unternehmens bereitzustellen. Sie können diesen Code als Vorlagenspezifikation veröffentlichen. Ihre Kollegen können dann Ihre Vorlagenspezifikation verwenden, um einen vollständigen virtuellen Computer bereitzustellen, auch aus dem Azure-Portal.
  • Module, die für Komponenten anderer Bereitstellungen konzipiert sind. Angenommen, Sie haben eine Bicep-Datei erstellt, die ein Speicherkonto erstellt. Sie benötigen wahrscheinlich Speicherkonten in vielen anderen Bereitstellungen, sodass Sie die Bicep-Datei in einer Registrierung veröffentlichen und sie als Modul in den Bereitstellungen Ihrer Organisation verwenden können.

Bei der Wahl zwischen Vorlagenspezifikationen und Bicep-Modulen ist eine gute Faustregel: Wenn die Vorlage unverändert in Ihrer gesamten Organisation bereitgestellt werden soll, sind Vorlagenspezifikationen wahrscheinlich eine gute Wahl. Wenn Sie eine bestimmte Vorlage jedoch wahrscheinlich in mehreren übergeordneten Vorlagen wiederverwenden werden, entsprechen Bicep-Module Ihren Anforderungen möglicherweise besser.

Überprüfen des wiederverwendbaren Codes in einem Workflow

Im Gegensatz zu regulären Bicep-Bereitstellungen müssen Sie die Ressourcen nicht direkt in Azure bereitstellen, wenn Sie eine Vorlagenspezifikation oder ein Modul erstellen. Stattdessen veröffentlichen Sie die Vorlagenspezifikation oder das Modul. Anschließend können Sie die Vorlagenspezifikation oder das Modul in einer anderen Bereitstellung verwenden. Diese Bereitstellung stellt die von Ihnen definierten Ressourcen bereit. Aufgrund dieses Unterschieds können sich die Methoden, wie Sie Ihre Vorlagenspezifikationen und Bicep-Module überprüfen und testen, möglicherweise von dem Prozess unterscheiden, den Sie für reguläre Bicep-Bereitstellungen verwenden.

Das Linting Ihres Bicep-Codes ist eine bewährte Vorgehensweise. Der Linter erkennt syntaktische Probleme und warnt Sie, wenn Sie die empfohlenen Methoden nicht befolgen.

Über das Linting hinaus möchten Sie möglicherweise Ihre Vorlagenspezifikationen und Module testen, indem Sie die Vorabüberprüfung verwenden. Möglicherweise sollten Sie sogar Ihre Vorlagenspezifikationen und Module in Azure bereitstellen und testen, um zu überprüfen, ob die erstellten Ressourcen sich erwartungsgemäß verhalten. Es kann jedoch aus zwei Gründen schwierig sein, diese Arten von Tests über einen Bereitstellungsworkflow auszuführen:

  • Die Vorabüberprüfung und Bereitstellungen erfordern eine Azure-Umgebung, um dort die Ressourcen bereitzustellen. Möglicherweise müssen Sie ein dediziertes Azure-Abonnement oder eine Ressourcengruppe verwalten, um Ihre Module bereitzustellen und zu testen.
  • Viele Vorlagenspezifikationen und Module erfordern, dass Sie eine Reihe von Parametern angeben. Möglicherweise müssen Sie einige Testparameter für Ihre Vorlagenspezifikationen oder Module erstellen, die verwendet werden sollen, wenn sie bereitgestellt werden.

Sie sollten auswählen, ob Workflowschritte einbezogen werden sollen, die Ihre Vorlagenspezifikationen und Module bereitstellen und testen. In diesem Microsoft Learn-Schulungsmodul linten wir den Bicep-Code, schließen aber keine anderen Tests ein. Wenn Sie Ihre Vorlagenspezifikationen und Module testen möchten, sollten Sie berücksichtigen, wie Sie sie in Azure bereitstellen. Überlegen Sie auch, ob Sie dedizierte Abonnements oder Ressourcengruppen verwenden, um die Ressourcen bereitzustellen.

Tipp

Lesen Sie Testen Ihres Bicep-Codes mit GitHub Actions, um weitere Informationen zum Testen Ihrer Bicep-Dateien in einem automatisierten Workflow zu erhalten.

Authentifizierung und Autorisierung

Wenn Sie Vorlagen selbst in Azure veröffentlichen, muss Ihr Microsoft Entra-Benutzer Zugriff auf die Ressourcengruppe erhalten, welche die Ressource für die Vorlage enthält. Ebenso muss Ihr Microsoft Entra-Benutzer, wenn Sie ein Bicep-Modul in einer Registrierung veröffentlichen, über die Berechtigung zum Schreiben in die Azure Container Registry-Instanz verfügen, die Ihre Organisation für seine Bicep-Module verwendet.

Wenn Sie mit einem automatisierten Bereitstellungsworkflow arbeiten, gelten dieselben Prinzipien. Da Sie jedoch nicht selbst die Bereitstellung ausführen, müssen Sie sicherstellen, dass die Workloadidentität Ihres Workflows den entsprechenden Zugriff auf die Ressourcengruppe zur Veröffentlichung der Vorlagenspezifikation oder zur Containerregistrierung für Veröffentlichungsmodule erhält.

Tipp

Wenn Sie ein Modul in einer Registrierung veröffentlichen, benötigt die Workloadidentität, die die Bereitstellung ausführt, wahrscheinlich nicht viele Berechtigungen. Wenn Ihre Registrierung die Microsoft Entra-Autorisierung verwendet, benötigt die Workload-Identität nur die AcrPush -Berechtigung für die Registrierung.

Berücksichtigen Sie die Verwendung des Sicherheitsprinzips der geringsten Rechte. Erteilen Sie der Workloadidentität des Workflows nur Zugriff auf die Containerregistrierung und nicht auf eine Ressourcengruppe oder ein Abonnement.

Veröffentlichen von Vorlagenspezifikationen und Modulen aus einem Workflow

Wenn Sie eine Vorlagenspezifikation von Ihrem eigenen Computer mithilfe der Azure CLI veröffentlichen, verwenden Sie einen ähnlichen Befehl wie den folgenden:

az ts create \
  --name StorageWithoutSAS \
  --location westus3 \
  --display-name "Storage account with SAS disabled" \
  --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
  --version 1 \
  --template-file main.bicep

Sie können diesen Azure CLI-Befehl in einen GitHub Actions-Schritt konvertieren:

- name: Publish template spec
  uses: azure/cli@v1
  with:
    inlineScript: |
      az ts create \
        --name StorageWithoutSAS \
        --location westus3 \
        --display-name "Storage account with SAS disabled" \
        --description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
        --version 1 \
        --template-file main.bicep

Der Workflow verwendet denselben Prozess, um die Vorlagenspezifikation zu veröffentlichen, die Sie selbst verwenden würden.

Wenn Sie ein Bicep-Modul über Ihren eigenen Computer mithilfe der Azure CLI veröffentlichen, verwenden Sie einen Befehl wie den folgenden:

az bicep publish \
   --file module.bicep \
   --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

Sie können diesen Azure CLI-Befehl auch in einen GitHub Actions-Schritt konvertieren:

- name: Publish Bicep module
  uses: azure/cli@v1
  with:
    inlineScript: |
      az bicep publish \
        --file module.bicep \
        --target 'br:toycompany.azurecr.io/mymodules/myqueue:2'

Tipp

In diesem Beispiel wird der Hostname der Bicep-Registrierung (toycompany.azurecr.io) in die Workflowschrittdefinition eingebettet. Dies ist jedoch keine bewährte Methode. Sie können Umgebungsvariablen verwenden, um Konfigurationseinstellungen wie folgt festzulegen. Später in diesem Microsoft Learn-Schulungsmodul wird erläutert, wie dies funktioniert.

In Kürze wird erklärt, wie Sie mithilfe der in dieser Lerneinheit beschriebenen Schritte eine Vorlagenspezifikation aus einem Workflow veröffentlichen.

Verwenden eines Moduls oder einer Vorlagenspezifikation

In früheren Microsoft Learn-Schulungsmodulen haben Sie gelernt, wie Sie die in Vorlagenspezifikationen definierten Ressourcen bereitstellen und wie Sie Bicep-Module verwenden, die in Registrierungen gespeichert sind. Unabhängig davon, ob Sie Ihre Vorlagenspezifikationen und Module manuell oder aus einem Bereitstellungsworkflow veröffentlichen, verwenden Sie sie auf dieselbe Weise und veröffentlichen sie auch wie gewohnt.

Sie stellen beispielsweise eine Vorlagenspezifikation oder Bicep-Datei mithilfe des Azure CLI-Befehls az deployment group create oder des New-AzResourceGroupDeployment-Cmdlets mit Azure PowerShell für eine Ressourcengruppe bereit.