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 müssen die Definitionen für die Azure-Ressourcen, die Sie bereitstellen möchten, gültig sein. Und wenn die in der Datei definierten Ressourcen bereitgestellt werden, müssen sie in den Kontingenten und Grenzwerten bleiben, die in Ihrem Azure-Abonnement vorhanden sind.

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. Um nach anderen Problemen zu suchen, müssen Sie anfordern, dass der Azure Resource Manager-Dienst Ihre Vorlage überprüft und Ihre Azure-Umgebung berücksichtigt.

Eine gültige Bicep-Vorlage kann mit höherer Wahrscheinlichkeit erfolgreich bereitgestellt werden. Sie erhalten Feedback, ohne Ihre Bicep-Vorlage bereitzustellen. Die Validierung ist eine bewährte Methode, da Azure bei der Bereitstellung einer ungültigen Bicep-Datei nur eine Teilmenge der in Ihrer Vorlage beschriebenen Ressourcen bereitstellen oder ändern kann. 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. Sie überprüfen, ob Sie Bicep-Sprachstichwörter richtig verwendet haben und dass Sie Ihre Azure-Ressourcen entsprechend den Anforderungen für jeden Ressourcentyp 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 Funktion concat() 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 eine schlechte Methode, da er dem sicheren Parameter einen lesbaren Wert verleiht, und die Benutzer ändern ihn möglicherweise nicht vor der Bereitstellung.

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 Bicep so konfigurieren, dass Sie Ihre Datei überprüfen, 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. Sie führen diese Konfiguration durch Hinzufügen einer bicepconfig.json Datei zum Ordner mit Ihrer Bicep-Datei aus. 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

Die bicepconfig.json Datei steuert außerdem, wie Visual Studio Code Fehler und Warnungen im Editor anzeigt. 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 als Preflight-Überprüfung bezeichnet und führt Prüfungen aus, die Informationen aus Azure benötigen. Dazu zählen folgende Überprüfungen:

  • Sind die Namen gültig, die Sie für Ihre Bicep-Ressourcen angegeben haben?
  • Sind die Namen, die Sie für Ihre Bicep-Ressourcen angegeben haben, bereits vergeben?
  • 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, das eine Pipeline mit Lint- und Überprüfungsphasen zeigt, die jeweils einen einzelnen Auftrag enthalten. Die Überprüfungsphase kommuniziert mit Azure.

Sie können die AzureResourceManagerTemplateDeployment Aufgabe verwenden, um eine Bicep-Datei zur Vorabprüfung zu übermitteln. Konfigurieren Sie deploymentMode zu 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 bereits verwendeten Bereitstellungsaufgabe, stellt jedoch 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. Die Preflight-Überprüfung überprüft, ob bereits ein anderes Speicherkonto den von Ihnen ausgewählten Namen hat. 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 der Bicep-Linter ausgeführt. Es ist jedoch in der Regel ratsam, den Linter separat auszuführen. Auf diese Weise werden mögliche 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.