Umsetzen von bewährten Methoden mithilfe des Testtoolkit-Moduls

Abgeschlossen

Bei der Entwicklung von Azure Resource Manager-Vorlagen (ARM-Vorlagen) gibt es Möglichkeiten, die Erstellung gültiger Vorlagen zu vereinfachen und Empfehlungen zur Verbesserung der Qualität bereitzustellen. Wie lauten diese Empfehlungen, und aus welchem Grund sollte Ihre Vorlage diese Empfehlungen umsetzen?

Die Empfehlungen beziehen sich auf verschiedene Ebenen: von den Parametern und Variablen bis hin zu Empfehlungen, die für Ihre Ressourcen gelten. Nachstehend finden Sie eine allgemeine Übersicht über diese Empfehlungen. Dieser können Sie entnehmen, welche Vorteile die Einhaltung dieser Empfehlungen mit sich bringt:

  • Wartbarkeit. Wenn Sie eine Vorlage entwickeln, wird es von der ursprünglichen Erstellung bis zu den Updates mit der Zeit immer schwieriger, die Vorlagen fehlerfrei und ordnungsgemäß zu halten. Wenn Ihre Vorlage wächst, nehmen auch Parameter und Variablen zu. Es ist wichtig, dass Sie verstehen, wofür die einzelnen Konstrukte verwendet werden, und wie Sie sie ordnungsgemäß einsetzen.

    Stellen Sie sich ein Szenario vor, in dem ein Parameter schlecht benannt ist und Sie Schwierigkeiten haben zu verstehen, was er bewirkt. Stellen Sie sich alternativ ein Szenario vor, in dem Sie entgegen aller Vorgaben einen hartcodierten Wert verwenden. Dies führt im Fall einer Änderung dazu, dass Ihre Azure-Dienste ausfallen. Alle diese Probleme tragen dazu bei, dass Sie Code zunächst verstehen und später wieder verwerfen müssen. Disziplin bei der Benennung und Korrektur von Konstrukten kann dazu beitragen, die Auswirkungen dieser Szenarios einzudämmen.

  • Richtigkeit. Sie können zwar versuchen, alles richtig zu benennen, doch können einfach zu viele Regeln vorhanden sein, um den Überblick zu behalten. In solchen Situationen wird ein Tool benötigt, das Sie an all diese Regeln und Bestimmungen erinnert und diese erzwingt.

  • Flexibilität. Sie sollten sicherstellen, dass Ihre Vorlagen flexibel genug sind, um in jeder Umgebung verwendet werden zu können. Wenn Sie Ihre Vorlagen nicht ordnungsgemäß parametrisieren, können sie möglicherweise nicht wiederverwendet werden.

  • Erweiterbarkeit. Unter Umständen möchten Sie Ihre eigenen Empfehlungen hinzufügen. Ihr Unternehmen oder Team kann über eigene Regeln verfügen, die erzwungen werden müssen.

Hinweis

Das Überprüfen von Code anhand solcher Empfehlungen wird manchmal als Linting bezeichnet.

Testtoolkit für ARM-Vorlagen

Es empfiehlt sich die Verwendung eines Testtools. So können Sie sich auf die Entwicklung konzentrieren und gleichzeitig sicher sein, dass das Tool alle Probleme finden und Ihre Vorlagen verbessern kann. Es gibt ein solches Tool: das Testtoolkit für ARM-Vorlagen (manchmal auch als ARM-TTK bezeichnet). Dieses Toolkit behebt die zuvor genannten Probleme, indem es eine Reihe von Tests ausführt. Diese Tests lassen sich in die folgenden Kategorien einteilen:

  • Überprüfung der Absicht des Benutzers: Mit diesen Tests wird geprüft, ob die deklarierten Variablen und Parameter auch verwendet werden. Ist dies nicht der Fall, wird eine Warnung angezeigt.
  • Befolgen von Sicherheitsmaßnahmen:. Des Weiteren muss unbedingt sichergestellt werden, dass die Vorlage keine möglicherweise vertraulichen Daten zurückgibt, etwa API-Geheimnisse.
  • Verwenden geeigneter Sprachkonstrukte: Sie sollten Sprachkonstrukte oder Hilfsfunktionen verwenden, um nicht auf hartcodierte Werte zurückzugreifen.

Hinweis

Dabei handelt es sich um Empfehlungen, nicht um Anforderungen. Wir empfehlen Ihnen jedoch dringend, diese Empfehlungen zu befolgen.

Installieren des Tools

Bei dem Tool handelt es sich um ein PowerShell-Modul. Damit Sie es ausführen können, müssen Sie die folgenden Schritte durchführen:

  1. Installieren Sie PowerShell. Diese Aufgabe wird unterschiedlich ausgeführt, je nachdem, ob Sie Linux, Mac oder Windows verwenden.
  2. Laden Sie das Modul herunter. Das Modul wird in einem GitHub-Repository gehostet. Sie können es von dort herunterladen oder über einen Befehl git clone abrufen.
  3. Importieren Sie das Modul. Bei diesem Schritt handelt es sich lediglich um eine einzeilige Anweisung, die Sie in eine PowerShell-Sitzung eingeben. Dadurch werden die ARM-TTK-Befehle verfügbar.

Die genaue Vorgehensweise wird in der nächsten Lerneinheit beschrieben. Nachdem Sie das Tool installiert haben, können Sie die Tests für Ihre Vorlage ausführen.

Ausführen der Tests

Zum Ausführen der Tests muss das Modul mit den richtigen Parametern aufgerufen werden. -TemplatePath ist ein obligatorischer Parameter, der eine Zeichenfolge erwartet, die auf den Speicherort der Vorlagendatei für die Bereitstellung verweist. Der Vorlagendateiname muss entweder azuredeploy.json oder maintemplate.json lauten. Ein typischer Testlauf kann daher wie der folgende Befehl aussehen:

Test-AzTemplate -TemplatePath path/to/template

Das Tool testet die Vorlagendatei sowie alle Vorlagendateien im gleichen Verzeichnis und seinen Unterordnern.

Eine typische Ausgabe eines Testlaufs kann wie folgt aussehen:

[+] adminUsername Should Not Be A Literal (24 ms)
[+] apiVersions Should Be Recent (18 ms)
[+] artifacts parameter (16 ms)
[+] DeploymentTemplate Schema Is Correct (17 ms)
[+] IDs Should Be Derived From ResourceIDs (15 ms)
[-] Location Should Not Be Hardcoded (41 ms)
     azuredeploy.json must use the location parameter, not resourceGroup().location (except when used as a default value in the main template)

Erfolgreiche Tests sind in Grün codiert. Außerdem wird ihnen [+] vorangestellt. Fehlgeschlagene Tests sind in Rot und mit dem Präfix [-] codiert.

Konfigurieren Ihres Testlaufs mit Testparametern

Bisher haben Sie gelernt, dass der Parameter -TemplatePath obligatorisch ist, wenn Sie das Tool ausführen. Das Tool akzeptiert auch optionale Parameter. Mit diesen Parametern können Sie bestimmte Dateien oder Tests ausführen. Diese Parameter bieten Ihnen eine präzisere Kontrolle beim Erstellen und Debuggen von Vorlagen.

Der Parameter -File wird verwendet, um eine bestimmte Datei auszuführen. Mit dem Parameter -Test können Sie ein Testszenario angeben, das ausgeführt werden soll.

Sie können die Parameter wie folgt verwenden:

  • Ausführen von Tests für eine einzelne Datei: Unter Umständen möchten Sie nur die Datei testen, an der Sie gerade arbeiten. Der Grund dafür besteht darin, dass es einfacher ist, sich auf die Erstellung einer bestimmten Vorlagendatei zu konzentrieren. Ein weiterer Vorteil ist, dass die Ausgabe weniger Rauschen enthält und nur das anzeigt, was für Sie von Interesse ist. Indem Sie den Parameter -File mit einem Dateipfad (einschließlich Dateiname) verwenden, können Sie die Tests nur für diese Datei ausführen.

    Wichtig

    Der Parameter erwartet weiterhin, dass azuredeploy.json oder maintemplate.json am angegebenen Speicherort vorhanden ist.

  • Ausführen eines einzelnen Testtyps für alle Dateien: Manchmal müssen Sie möglicherweise einen einzigen Testtyp ausführen, um sicherzustellen, dass die Kriterien für ein bestimmtes Szenario erfüllt werden. Dies erreichen Sie mithilfe des Parameters -Test. Der Parameter erwartet den vollständigen Namen des Tests in Anführungszeichen, z. B. Resources Should Have Location (Ressourcen müssen einen Speicherort aufweisen).