Linten und Überprüfen des Bicep-Codes
Nachdem Sie den Zweck der einzelnen Pipelinephasen kennengelernt haben, erhalten Sie nun Informationen zu den ersten Überprüfungsschritten, die Sie Ihrer Bicep-Bereitstellungspipeline hinzufügen können. In dieser Lerneinheit erfahren Sie, wie Sie Bicep-Vorlagen überprüfen. Außerdem erfahren Sie mehr über die beiden üblichen Aktivitäten in der Überprüfungsphase: Linting und Preflightüberprüfung.
Wie sieht eine gültige Bicep-Datei aus?
Eine gültige Bicep-Datei darf keine Syntaxfehler enthalten. Außerdem sind die Definitionen für die Azure-Ressourcen gültig, die Sie bereitstellen möchten. Wenn die in der Datei definierten Ressourcen bereitgestellt werden, bleiben sie innerhalb der Kontingente und Grenzwerte Ihres Azure-Abonnements.
Einige der Überprüfungen werden für Ihre Bicep-Datei isoliert ausgeführt, wie etwa die Überprüfungen auf Syntaxfehler, gültige Azure-Ressourcendefinitionen und Codequalität. Diese Schritte sind Teil des sogenannten Linting-Prozesses. Für die Suche nach weiteren Problemen müssen Sie die Überprüfung Ihrer Vorlage unter Berücksichtigung Ihrer Azure-Umgebung durch den Azure Resource Manager-Dienst anfordern.
Eine gültige Bicep-Vorlage kann mit höherer Wahrscheinlichkeit erfolgreich bereitgestellt werden. Sie erhalten Feedback, ohne Ihre Bicep-Vorlage bereitzustellen. Die Validierung hat sich bewährt, da Azure bei der Bereitstellung einer ungültigen Bicep-Datei möglicherweise nur eine Teilmenge der in Ihrer Vorlage beschriebenen Ressourcen bereitstellt oder ändert. Das Ergebnis kann sein, dass der Zustand Ihrer Umgebung inkonsistent wird und sich möglicherweise nicht so verhält, wie Sie es erwarten.
Erstellen und Linten von Bicep-Code
Wenn Sie eine Bicep-Datei bereitstellen, führen die Bicep-Tools zunächst einige grundlegende Überprüfungsschritte aus. Dabei handelt es sich um dieselben Schritte, die auch bei einer Änderung der Datei mithilfe von Visual Studio Code ausgeführt werden. Es wird überprüft, ob Sie die Schlüsselwörter der Bicep-Sprache richtig verwendet haben und ob Sie Ihre Azure-Ressourcen gemäß den Anforderungen für die einzelnen Ressourcentypen definiert haben.
Darüber hinaus führt Bicep für Ihre Dateien einen Linter aus. Dieser überprüft Ihren Code anhand einer Reihe von Empfehlungen. Der Bicep-Linter überprüft, ob Sie für Ihre Datei die bewährten Methoden bezüglich der Wartbarkeit, Richtigkeit, Flexibilität und Erweiterbarkeit befolgt haben.
Ein Linter enthält vordefinierte Regeln für jede dieser Kategorien. Beispiele für Linterregeln:
- Nicht verwendete Parameter: Der Linter sucht nach Parametern, die in der gesamten Bicep-Datei nicht verwendet werden. Durch das Entfernen nicht verwendeter Parameter vereinfachen Sie die Bereitstellung Ihrer Vorlage, da Sie keine unnötigen Werte angeben müssen. Zudem vermeiden Sie Verwirrung, wenn andere Personen mit Ihrer Bicep-Datei arbeiten möchten.
- Zeichenfolgeninterpolation: Der Linter überprüft, ob Ihre Datei die
concat()
-Funktion anstelle der Bicep-Zeichenfolgeninterpolation verwendet. Die Zeichenfolgeninterpolation erhöht die Lesbarkeit Ihrer Bicep-Dateien. - Standardwerte für sichere Parameter: Der Linter warnt Sie, wenn Sie Standardwerte für Parameter festlegen, die mit dem Decorator
@secure()
markiert sind. Ein Standardwert für einen sicheren Parameter ist deshalb nicht empfehlenswert, weil dann der sichere Parameter einen für Menschen lesbaren Wert erhält, und Benutzer*innen ihn möglicherweise vor der Bereitstellung nicht ändern.
Der Bicep-Linter wird automatisch ausgeführt, wenn Sie die Bicep-Tools verwenden. Jede Bicep-Datei, die Sie erstellen, wird vom Linter anhand der bewährten Methoden überprüft. Linten wird bei der Bereitstellung einer Bicep-Datei in Azure automatisch durchgeführt.
In einer Pipeline sollten die Überprüfungs- und Lintingschritte jedoch in der Regel vor der Bereitstellung der Datei ausgeführt werden. Sie können die Datei von Bicep überprüfen lassen, indem Sie die Bicep-Datei manuell über die Bicep-CLI erstellen:
az bicep build --file main.bicep
bicep build main.bicep
Hinweis
Wenn Sie den Befehl build
ausführen, transpiliert Bicep Ihren Bicep-Code auch in eine JSON-ARM-Vorlage. Sie können die dabei ausgegebene Datei ignorieren, da Sie sie in der Regel nicht benötigen.
Da der Linter Ihre Bicep-Vorlagen bei jedem Einchecken von Code in Ihr Repository überprüfen soll, können Sie Ihrer Pipeline eine Lintingphase und einen Lintingauftrag hinzufügen:
Sie können diese Ergänzung in Ihrer YAML-Pipelinedatei auf folgende Weise ausdrücken:
stages:
- stage: Lint
jobs:
- job: Lint
steps:
- script: |
az bicep build --file deploy/main.bicep
Linterwarnungen und -fehler
Standardmäßig gibt der Linter eine Warnung aus, wenn er in einer Bicep-Datei Regelverstöße feststellt. Warnungen, die vom Bicep-Linter ausgegeben werden, werden nicht als Fehler behandelt, sodass die Ausführung der Pipeline oder nachfolgender Phasen nicht beendet wird.
Wenn Sie möchten, dass Verstöße gegen Linterregeln als Fehler und nicht als Warnungen behandelt werden, können Sie dieses Verhalten ändern. Fügen Sie für diese Konfiguration dem Ordner, der Ihre Bicep-Datei enthält, die Datei bicepconfig.json hinzu. Sie können entscheiden, welche Linterprobleme als Fehler behandelt und welche weiterhin als Warnungen ausgegeben werden sollen. Sie erfahren später in diesem Modul, wie Sie Linter-Regeln aktualisieren können.
Tipp
Mit der Datei bicepconfig.json wird auch gesteuert, wie Visual Studio Code-Fehler und -Warnungen im Editor angezeigt werden. Falsch konfigurierte Teile in Ihrer Bicep-Vorlage werden mit roten und gelben Wellenlinien markiert. Durch diese Indikatoren erhalten Sie beim Schreiben des Bicep-Codes noch schnelleres Feedback, wodurch die Fehlerwahrscheinlichkeit weiter verringert wird.
Nachdem Sie den Linter für die Ausgabe von Fehlern neu konfiguriert haben, wird Ihre Pipeline bei jedem vom Linter erkannten Problem beendet, und nachfolgende Aufträge oder Phasen werden nicht ausgeführt. Mit dieser Konfiguration stellen Sie sicher, dass kein fehlerhafter Bicep-Code bereitgestellt wird.
Preflight-Überprüfung
Sie sollten auch überprüfen, ob eine erfolgreiche Bereitstellung der Bicep-Vorlage in Ihrer Azure-Umgebung wahrscheinlich ist. Diese Überprüfung wird Preflight-Überprüfung genannt. Dabei werden zusätzliche Überprüfungen ausgeführt, für die Azure Informationen bereistellen muss. Dazu zählen folgende Überprüfungen:
- Sind die Namen gültig, die Sie für Ihre Bicep-Ressourcen angegeben haben?
- Sind die Namen bereits vergeben, die Sie für Ihre Bicep-Ressourcen angegeben haben?
- Sind die Regionen gültig, in denen Sie Ihre Ressourcen bereitstellen?
Für die Preflight-Überprüfung ist eine Kommunikation mit Azure erforderlich, doch es werden keine Ressourcen bereitgestellt.
Sie können die Aufgabe AzureResourceManagerTemplateDeployment
verwenden, um eine Bicep-Datei für die Preflight-Überprüfung zu übermitteln, und konfigurieren Sie deploymentMode
als Validation
:
- stage: Validate
jobs:
- job: Validate
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
connectedServiceName: 'MyServiceConnection'
location: $(deploymentDefaultLocation)
deploymentMode: Validation
resourceGroupName: $(ResourceGroupName)
csmFile: deploy/main.bicep
Dieser Befehl ähnelt der Bereitstellungsaufgabe, die Sie bereits verwendet haben, stellt aber keine Ressourcen bereit. Es werden zusätzliche Überprüfungen der Ressourcen durchgeführt, die in Ihrer Vorlage verwendet werden.
Angenommen, Ihre Bicep-Datei enthält ein Speicherkonto. Bei der Preflightüberprüfung wird überprüft, ob der von Ihnen gewählte Name bereits von einem anderen Speicherkonto verwendet wird. Es wird außerdem überprüft, ob der von Ihnen für das Speicherkonto gewählte Name den Namenskonventionen entspricht.
Mit dem Befehl für die Preflight-Überprüfung wird auch der Bicep-Linter ausgeführt. Es ist jedoch in der Regel ratsam, den Linter separat auszuführen. Auf diese Weise werden Linterfehler schnell erkannt, und Sie müssen nicht auf den Abschluss des Überprüfungsvorgangs warten. Die Überprüfung dauert länger.
Wichtig
Bei einer Preflightüberprüfung führt jeder Azure-Ressourcenanbieter eigene Überprüfungen durch. Einige Ressourcenanbieter führen nicht viele Überprüfungen durch, andere hingegen schon. Aus diesem Grund können Sie sich nicht auf die Preflight-Überprüfung verlassen, ob Ihre Datei gültig ist. Trotzdem ist es ein nützliches Tool und sollte in Ihre Pipeline eingeschlossen werden.
Wenn Sie Ihrer Pipeline Überprüfungsphasen hinzufügen, um den Linter auszuführen und eine Preflightüberprüfung durchzuführen, können Sie Ihre Bicep-Datei unbesorgter bereitstellen.