Veröffentlichen von Bicep-Code aus einer Bereitstellungspipeline
Wenn Sie den Veröffentlichungsprozess für eine Vorlagenspezifikation oder ein Bicep-Modul automatisieren, müssen Sie sicherstellen, dass alles, was Sie normalerweise manuell ausführen, automatisiert und innerhalb der Pipeline ausgeführt werden kann. In dieser Einheit wenden Sie Prinzipien an, die Sie zuvor gelernt haben, um Vorlagenspezifikationen und Bicep-Module über eine Bereitstellungspipeline zu 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 von Komplettlö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 als 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 von wiederverwendbarem Code in einer Pipeline
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 dann die von Ihnen definierten Ressourcen bereit. Daher können sich die Methoden zum Überprüfen und Testen Ihrer Vorlagenspezifikationen und Bicep-Module von dem Prozess unterscheiden, den Sie für normale 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 sollten Sie ihre Vorlagenspezifikationen und -module mithilfe der Preflight-Validierung testen. 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 schwierig sein, diese Arten von Tests aus einer Bereitstellungspipeline aus zwei Gründen 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 müssen entscheiden, ob Pipelineschritte einbezogen werden sollen, die Ihre Vorlagenspezifikationen und -module bereitstellen und testen. In diesem Microsoft Learn-Modul linten wir den Bicep-Code, schließen aber keine anderen Tests ein. Wenn Sie Ihre Vorlagenspezifikationen und -module testen möchten, überlegen Sie, wie Sie sie in Azure bereitstellen. Überlegen Sie außerdem, ob sie dedizierte Abonnements oder Ressourcengruppen verwenden, um die Ressourcen bereitzustellen.
Tipp
Es wird empfohlen, Ihren Bicep-Code mithilfe von Azure Pipelines zu testen, um weitere Informationen zum Testen Ihrer Bicep-Dateien in einer automatisierten Pipeline zu erfahren.
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 einer automatisierten Bereitstellungspipeline arbeiten, gelten die gleichen Prinzipien. Da Sie jedoch nicht die Person sind, die die Bereitstellung ausführt, müssen Sie sicherstellen, dass der Service Principal Ihrer Pipeline den entsprechenden Zugriff auf die Ressourcengruppe für das Veröffentlichen der Vorlage-Spezifikation oder auf die Containerregistrierung für das Veröffentlichen von Modulen gewährt wird.
Tipp
Wenn Sie ein Modul in einer Registrierung veröffentlichen, benötigt der Dienstprinzipal, der die Bereitstellung ausführt, wahrscheinlich nicht viele Berechtigungen. Wenn Ihre Registrierung die Microsoft Entra-Autorisierung verwendet, benötigt der Dienstprinzipal nur die AcrPush-Berechtigung für die Registrierung.
Erwägen Sie die Verwendung des Sicherheitsprinzips der geringsten Rechte. Stellen Sie sicher, dass der Dienstprinzipal der Pipeline nur Zugriff auf die Containerregistrierung erhält und nicht auf eine Ressourcengruppe oder ein Abonnement.
Veröffentlichen von Vorlagenspezifikationen und Modulen aus einer Pipeline
Wenn Sie eine Vorlagenspezifikation von Ihrem eigenen Computer mithilfe der Azure CLI veröffentlichen, verwenden Sie einen Befehl wie die folgende:
az ts create \
--name StorageWithoutSAS \
--resource-group MyResourceGroup \
--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 Pipelineschritt konvertieren:
- task: AzureCLI@2
name: Publish
displayName: Publish template spec
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az ts create \
--name StorageWithoutSAS \
--resource-group MyResourceGroup \
--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
Die Pipeline verwendet denselben Prozess, um die Vorlagenspezifikation zu veröffentlichen, die Sie selbst verwenden würden.
Ebenso verwenden Sie beim Veröffentlichen eines Bicep-Moduls von Ihrem eigenen Computer mithilfe der Azure CLI 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 Pipelineschritt konvertieren:
- task: AzureCLI@2
name: Publish
displayName: Publish Bicep module
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
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 Pipelineschrittdefinition eingebettet. Dies ist jedoch keine bewährte Methode. Sie können Umgebungsvariablen verwenden, um Konfigurationseinstellungen wie folgt festzulegen. Sie sehen, wie dies weiter unten in diesem Microsoft Learn-Modul funktioniert.
Wie Sie eine Vorlagenspezifikation aus einer Pipeline veröffentlichen, wird in dieser Einheit beschrieben.
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 über eine Bereitstellungspipeline veröffentlichen, verwenden und bereitstellen Sie sie auf die gleiche Weise.
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.