Tillämpa metodtips med hjälp av testverktygsmodulen

Slutförd

När vi utvecklar Azure Resource Manager-mallar (ARM-mallar) finns det sätt att göra det enklare att skapa giltiga mallar och ge rekommendationer för att förbättra deras kvalitet. Vilka är de här rekommendationerna och varför bör du använda dem i dina mallar?

Det finns rekommendationer på olika nivåer: allt från parametrar och variabler till rekommendationer som gäller för dina resurser. Nu ska vi gå igenom rekommendationerna översiktligt och se vad de kan förbättra:

  • Underhållsmässighet. När du utvecklar en mall kan det bli svårt att hålla den tydlig och välordnad långsiktigt om du uppdaterar den flera gånger. När mallen växer, gör även dina parametrar och variabler det. Det är viktigt att du förstår vad alla dessa används för samt hur du använder dem på rätt sätt.

    Föreställ dig ett scenario där en parameter är dåligt namngiven och du kämpar för att förstå vad den gör. Eller så använder du ett hårdkodat värde där du inte bör göra det, och när något ändras försvinner dina Azure-tjänster. Alla dessa problem bidrar till bördan att behöva förstå och senare avfärda det du tittar på. Det underlättar om du är noga med att namnge och rensa objekt.

  • Korrekthet. Du kanske försöker namnge allt på rätt sätt, men det kan bara finnas för många regler att hålla reda på. Sådana situationer kräver ett verktyg som påminner dig om alla dessa regler och förordningar och framtvingar dem.

  • Flexibilitet. Se till att mallarna är tillräckligt flexibla för att kunna användas i olika miljöer. Om du inte parameteriserar dina mallar korrekt kanske de inte kan återanvändas.

  • Utökningsbarhet. Ibland kanske du vill utöka dina egna rekommendationer. Ditt företag eller team kan ha egna regler att tillämpa.

Kommentar

Att kontrollera kod mot den här typen av rekommendationer kallas ibland linting.

Testverktyg för ARM-mall

Det kan vara en bra idé att använda ett testverktyg så att du kan fokusera på skapandet och veta att verktyget hittar eventuella problem med och förbättringar av mallarna. Det finns ett sådant verktyg: ARM Template Test Toolkit, som ibland kallas ARM-TTK. Det hanterar problem som de vi gick igenom tidigare genom att köra ett antal tester. Testerna kan grupperas i följande kategorier:

  • Validering av användarens avsikt. I den här kategorin kontrolleras att deklarerade variabler och parametrar används. Om de inte används får du en varning.
  • Följa säkerhetspraxis. En annan viktig del är att se till att inget känsligt returneras från mallen, till exempel API-hemligheter.
  • Rätt språkkonstruktioner. Du bör använda språkkonstruktioner eller hjälpfunktioner så att du inte förlitar dig på hårdkodade värden.

Kommentar

De är rekommendationer, inte krav. Men vi rekommenderar starkt att du följer dem.

Installera verktyget

Verktyget är en PowerShell-modul. För att kunna köra den måste du följa dessa steg:

  1. Installera PowerShell. Den här uppgiften utförs på olika sätt beroende på om du använder Linux, Mac eller Windows.
  2. Ladda ned modulen. Modulen finns på en GitHub-lagringsplats. Du kan ladda ned det därifrån eller hämta det via ett git clone-kommando.
  3. Importera modulen. Det här steget är bara en enradsinstruktion som du anger i en PowerShell-session, vilket gör ARM-TTK-kommandona tillgängliga.

Du får se hur du gör allt detta i nästa lektion. När du har installerat verktyget är du redo att köra testerna på mallen.

Köra testerna

Att köra testerna innebär att anropa modulen med lämpliga parametrar. -TemplatePath är en obligatorisk parameter som förväntar sig en sträng som pekar på platsen för distributionsmallfilen. Mallfilnamnet måste antingen vara azuredeploy.json eller maintemplate.json. En typisk testkörning kan därför se ut som följande kommando:

Test-AzTemplate -TemplatePath path/to/template

Verktyget testar mallfilen och testar även alla mallfiler i samma katalog och dess undermappar.

Utdata från en typisk testkörning kan se ut så här:

[+] 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)

Lyckade tester kodas i grönt och prefixet [+]är . Misslyckade tester kodas i rött med prefixet [-].

Konfigurera testkörningen med testparametrar

Hittills har du sett hur det är obligatoriskt att inkludera parametern -TemplatePath när du kör verktyget. Verktyget tar dessutom valfria parametrar. Med de här parametrarna kan du köra specifika filer eller tester. Parametrarna ger dig mer detaljerad kontroll när du skriver och felsöker mallar.

Parametern -File används för att köra en specifik fil. Med parametern -Test kan du ange ett testscenario som ska köras.

Du kan använda parametrarna på följande sätt:

  • Köra tester på en enda fil. Du vill kanske bara köra testerna på en enskild fil som du arbetar med för tillfället. En orsak är kan vara att du vill koncentrera dig på att skriva en specifik mallfil. En annan fördel är att utdata bara innehåller det du är intresserad av. Genom att använda parametern -File med en sökväg till en fil (inklusive filnamnet) kan du köra testerna på just den filen.

    Viktigt!

    Parametern förväntar sig fortfarande att azuredeploy.json eller maintemplate.json finns på den angivna platsen.

  • Köra en viss typ av test på alla filer. Ibland kanske du vill köra en viss typ av test för att se till att du uppfyller kriterierna för just det scenariot. Du kan utföra den här uppgiften med hjälp av parametern -Test. Parametern förväntar sig det fullständiga namnet på testet inom citattecken. Resurser bör till exempel ha plats.