Linten und Überprüfen des Bicep-Codes

Abgeschlossen

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:

Diagramm: Pipeline mit einer Lintingphase, die den Auftrag zum Ausführen eines Linters für die Datei enthält

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.

Diagramm: Pipeline mit einer Linting- und einer Überprüfungsphase, die jeweils einen Auftrag enthalten. In der Überprüfungsphase erfolgt eine Kommunikation mit Azure.

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.