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 erledigen, automatisiert und innerhalb der Pipeline ausgeführt werden kann. In dieser Lerneinheit wenden Sie Prinzipien an, die Sie zuvor kennengelernt haben, indem Sie Vorlagenspezifikationen und Bicep-Module aus einer Bereitstellungspipeline 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 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 definierten Ressourcen bereit. Entsprechend können sich die Methoden, wie Sie Ihre Vorlagenspezifikationen und Bicep-Module überprüfen und testen, 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 eine Bereitstellungspipeline 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, sollten Sie berücksichtigen, wie Sie sie in Azure bereitstellen. Überlegen Sie auch, ob dedizierte Abonnements oder Ressourcengruppen verwendet werden sollen, um die Ressourcen bereitzustellen.
Tipp
Lesen Sie Testen Ihres Bicep-Codes mit Azure Pipelines, um weitere Informationen zum Testen Ihrer Bicep-Dateien in einer automatisierten Pipeline 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. Wenn Sie ein Bicep-Modul in einer Registry veröffentlichen, muss Ihr Microsoft Entra-Benutzer die Berechtigung haben, auf die Azure Container Registry-Instanz zu schreiben, die Ihre Organisation für ihre Bicep-Module verwendet.
Wenn Sie mit einer automatisierten Bereitstellungspipeline arbeiten, gelten dieselben Prinzipien. Da Sie jedoch nicht selbst die Bereitstellung ausführen, müssen Sie sicherstellen, dass der Dienstprinzipal Ihrer Pipeline 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 der Dienstprinzipal, der die Bereitstellung ausführt, wahrscheinlich nicht viele Berechtigungen. Wenn Ihre Registrierung die Autorisierung über Microsoft Entra verwendet, benötigt der Dienstprinzipal nur die AcrPush-Berechtigung für die Registrierung.
Berücksichtigen Sie die Verwendung des Sicherheitsprinzips der geringsten Rechte. Erteilen Sie dem Dienstprinzipal der Pipeline nur Zugriff auf die Containerregistrierung 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 ähnlichen Befehl wie den folgenden:
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.
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 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. Später in diesem Microsoft Learn-Modul wird erläutert, wie dies 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 aus einer Bereitstellungspipeline 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.