Best practices toepassen met behulp van de test-toolkitmodule
Wanneer we Azure Resource Manager-sjablonen (ARM-sjablonen) ontwikkelen, zijn er manieren waarop we het eenvoudiger maken om geldige sjablonen te maken en aanbevelingen te doen om hun kwaliteit te verbeteren. Wat zijn deze aanbevelingen en waarom zou het nuttig kunnen zijn voor uw sjabloon om deze op te volgen?
Er zijn aanbevelingen op verschillende niveaus: alles van parameters en variabelen tot aanbevelingen die van toepassing zijn op uw resources. Laten we eens kijken naar deze aanbevelingen op een hoog niveau en bekijken wat de voordelen voor u zijn als u de aanbevelingen opvolgt:
Onderhoudbaarheid. Tijdens het ontwikkelen van uw sjabloon (van het ontwerpen tot het bijwerken) kan het op een gegeven moment lastig worden om het netjes en goed geordend te houden. Naarmate uw sjabloon groeit, worden uw parameters en variabelen ook gebruikt. Het is belangrijk om te begrijpen waarvoor de verschillende constructies worden gebruikt en hoe u ze optimaal kunt toepassen.
Stel u een scenario voor waarin een parameter een slechte naam heeft en u moeite hebt om te begrijpen wat deze doet. Of u gebruikt een vastgelegde waarde waar u dat niet moet doen en wanneer er iets verandert, gaan uw Azure-services omlaag. Al deze problemen dragen bij aan de last van het begrijpen en later negeren van wat u bekijkt. Als u op een vaste manier namen toekent en alles goed opgeschoond houdt, kunt u de effecten van deze scenario's voorkomen.
Juistheid. U kunt proberen om alles op de juiste manier te noemen, maar er kunnen gewoon te veel regels zijn om bij te houden. Dergelijke situaties vragen om een hulpprogramma dat u herinnert aan al deze regels en voorschriften, en dwingt ze af.
Flexibiliteit. U wilt ervoor zorgen dat uw sjablonen flexibel genoeg zijn om te worden gebruikt in elke omgeving. Als u uw sjablonen niet goed parameteriseert, is het mogelijk dat ze niet opnieuw kunnen worden gebruikt.
Uitbreidbaarheid. Soms wilt u uw eigen aanbevelingen toevoegen. Uw bedrijf of team heeft mogelijk eigen regels om af te dwingen.
Notitie
Het controleren van code op dit soort aanbevelingen wordt soms linting genoemd.
De TEST-toolkit voor ARM-sjablonen
Het gebruik van een testprogramma is een goed idee. U kunt zich dan concentreren op ontwerpen, omdat u weet dat er een hulpprogramma is dat problemen opspoort en helpt uw sjablonen beter te maken. Er is een dergelijk hulpprogramma: de ARM Template Test Toolkit, ook wel arm-TTK genoemd. Hiermee worden de eerder vermelde problemen opgelost door een reeks tests uit te voeren. De tests kunnen worden gegroepeerd in de volgende categorieën:
- De intentie van de gebruiker valideren. In deze categorie ziet u of de opgegeven variabelen en parameters allemaal worden gebruikt en er wordt een waarschuwing gegeven als dat niet het geval is.
- Beveiligingsmethoden opvolgen. Een ander belangrijk aspect is om ervoor te zorgen dat niets dat door de sjabloon wordt geretourneerd gevoelige informatie, zoals API-geheimen, bevat.
- Het gebruik van de juiste taalconstructies. U kunt het beste taalconstructies of helper-functies gebruiken, zodat u niet hoeft te vertrouwen op in code vastgelegde waarden.
Notitie
Dit zijn aanbevelingen en geen vereisten. We raden u wel ten sterkste aan deze te volgen.
Het hulpprogramma installeren
Het hulpprogramma is een PowerShell-module. Als u het wilt uitvoeren, moet u de volgende stappen uitvoeren:
- Installeer PowerShell. Deze taak verschilt afhankelijk van of u Linux, Mac of Windows gebruikt.
- Download de module. De module wordt gehost in een GitHub-opslagplaats. U kunt het daar downloaden of het ophalen met een
git clone
-opdracht. - Importeer de module. Deze stap is slechts een instructie van één regel die u invoert in een PowerShell-sessie, waardoor de ARM-TTK-opdrachten beschikbaar worden.
In de volgende les ziet u hoe u dit allemaal kunt doen. Nadat u het hulpprogramma hebt geïnstalleerd, bent u klaar om de tests op uw sjabloon uit te voeren.
De tests uitvoeren
Het uitvoeren van de tests omvat het aanroepen van de module met de juiste parameters. -TemplatePath
is een verplichte parameter die een tekenreeks verwacht die verwijst naar de locatie van het implementatiesjabloonbestand. De bestandsnaam van de sjabloon moet azuredeploy.json of maintemplate.json zijn. Een doorsnee testuitvoering kan er dan als de volgende opdracht uitzien:
Test-AzTemplate -TemplatePath path/to/template
Het hulpprogramma test het sjabloonbestand en test ook alle sjabloonbestanden in dezelfde map en de bijbehorende submappen.
Een doorsnee uitvoer van een testuitvoering kan er als volgt uitzien:
[+] 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)
Geslaagde tests worden groen gecodeerd en worden voorafgegaan door [+]
. Mislukte tests worden rood gecodeerd met het voorvoegsel [-]
.
Uw test configureren met testparameters
U hebt tot nu toe gezien hoe het opnemen van de parameter -TemplatePath
verplicht is wanneer u het hulpprogramma uitvoert. Daarnaast accepteert het hulpprogramma optionele parameters. Met deze parameters kunt u specifieke bestanden of specifieke tests uitvoeren. Het gebruik van deze parameters geeft u een meer gedetailleerde controle bij het maken van en fouten opsporen in sjablonen.
De parameter -File
wordt gebruikt om een specifiek bestand uit te voeren. Met de parameter -Test
kunt u een testscenario opgeven dat moet worden uitgevoerd.
U kunt de parameters op de volgende manieren gebruiken:
Tests uitvoeren op één bestand. Het kan zijn dat u alleen het ene bestand wilt testen waaraan u op dit moment werkt. De reden hiervoor is dat het dan gemakkelijker is om u te concentreren op het ontwerpen van een specifiek sjabloonbestand. Een aanvullend voordeel is dat de uitvoer dan minder ruis bevat en u alleen ziet wat u interesseert. Door de
-File
parameter te gebruiken met een pad naar een bestand (inclusief de bestandsnaam), kunt u de tests uitvoeren op alleen dat bestand.Belangrijk
De parameter verwacht nog steeds azuredeploy.json of maintemplate.json op de opgegeven locatie te bestaan.
Eén type test uitvoeren op alle bestanden. Soms wilt u mogelijk slechts één type test uitvoeren om te controleren of u voldoet aan de criteria voor dat scenario. U kunt deze taak uitvoeren met behulp van de parameter
-Test
. De parameter verwacht de volledige naam van de test tussen aanhalingstekens; Resources moeten bijvoorbeeld locatie hebben.