Použití osvědčených postupů pomocí modulu testovací sady nástrojů
Když vyvíjíme šablony Azure Resource Manageru (šablony ARM), existují způsoby, jak usnadnit vytváření platných šablon a poskytování doporučení ke zlepšení jejich kvality. Jaká jsou tedy tato doporučení a proč může být vhodné, aby se v šabloně dodržovala?
Existují doporučení na různých úrovních: vše od parametrů a proměnných až po doporučení, která platí pro vaše prostředky. Pojďme se na ně podívat obecně a zjistit, co můžeme získat, pokud se jimi budeme řídit:
Udržovatelnost. Během vývoje šablon (od prvního vytvoření po aktualizace) začne být po nějaké době obtížné udržovat je čisté a uspořádané. Jak vaše šablona roste, udělejte to tak, aby parametry a proměnné. Je proto důležité znát, k čemu každá z nich slouží a jak je správně používat.
Představte si scénář, ve kterém je parametr špatně pojmenovaný a snažíte se pochopit, co dělá. Nebo používáte pevně zakódovanou hodnotu, kde byste neměli a když se něco změní, vaše služby Azure se zpomalí. Všechny tyto problémy přispívají k zátěži, že musíte pochopit a později zavřít, na co se díváte. Disciplína při vytváření názvů a čištění vám může pomoct zmírnit dopady těchto scénářů.
Správnost. Možná se pokusíte pojmenovat všechno správným způsobem, ale pro sledování může být příliš mnoho pravidel. Takové situace vyžadují nástroj, který vám připomíná všechna tato pravidla a předpisy a vynucuje je.
Flexibilita Chcete mít jistotu, že vaše šablony jsou natolik flexibilní, aby šly použít v jakémkoli prostředí. Pokud šablony správně parametrizujete, nemusí být možné je znovu použít.
Rozšiřitelnost: Někdy může být potřeba přidat vlastní doporučení. Vaše společnost nebo tým můžou mít vlastní pravidla, která je potřeba vynutit.
Poznámka:
Kontrola kódu proti těmto druhům doporučení se někdy označuje jako lintování.
Testovací sada nástrojů pro šablony ARM
Použít testovací nástroj je dobrý nápad, protože se můžete soustředit na vytváření a vědět, že nástroj odhalí možné problémy a vylepší vaši šablonu. Existuje takový nástroj: sada nástrojů ARM Template Test Toolkit, někdy označovaná jako ARM-TTK. Ten řeší výše uvedené problémy spouštěním řady testů. Ty se dají rozdělit do následujících kategorií:
- Ověřování záměru uživatele: Tato kategorie zjišťuje, zda se používají všechny deklarované proměnné a parametry, a v opačném případě uživatele upozorní.
- Dodržování postupů zabezpečení. Dalším důležitým aspektem je kontrola, že se ze šablony nevrátí žádné potenciálně citlivé informace, například tajné klíče rozhraní API.
- Používání vhodných jazykových konstrukcí: Měli byste používat jazykové konstrukce (neboli pomocné funkce), abyste se nemuseli spoléhat na pevně zakódované hodnoty.
Poznámka:
V textu níže uvádíme doporučení, nikoliv požadavky. Je nicméně velmi vhodné se jimi řídit.
Instalace nástroje
Tento nástroj je modul PowerShellu. Abyste ho mohli spustit, musíte postupovat takto:
- Nainstalujte PowerShell. Tato úloha se provádí odlišně v Linuxu, Windows a na Macu.
- Stáhněte si modul. Modul je hostovaný v úložišti GitHub. odkud si ho můžete stáhnout nebo načíst prostřednictvím příkazu
git clone
. - Importujte modul. Tento krok představuje jenom jednořádkovou instrukci, kterou zadáte do relace PowerShellu, která zpřístupní příkazy ARM-TTK.
V další lekci se dozvíte, jak to udělat. Jakmile nástroj nainstalujete, jste připraveni spustit testy na šabloně.
Spouštění testů
Spuštění testů zahrnuje vyvolání modulu s příslušnými parametry. -TemplatePath
je povinný parametr, který očekává řetězec, který odkazuje na umístění souboru šablony nasazení. Název souboru šablony musí být azuredeploy.json nebo maintemplate.json. Typický testovací běh tak může vypadat jako následující příkaz:
Test-AzTemplate -TemplatePath path/to/template
Nástroj testuje soubor šablony a také testuje všechny soubory šablon ve stejném adresáři a jejích podsložkách.
Typický výstup testovacího běhu může vypadat takto:
[+] 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)
Úspěšné testy jsou kódovány zeleně a jsou předponou [+]
. Neúspěšné testy jsou kódovány červeně s předponou [-]
.
Konfigurace testovacího běhu s parametry testu
Zatím jste viděli, jak je zahrnutí parametru -TemplatePath
při spuštění nástroje povinné. Nástroj ale také přijímá volitelné parametry. Ty vám umožňují spouštět specifické soubory nebo testy. Používání těchto parametrů vám dává detailnější kontrolu při vytváření šablon i při jejich ladění.
-File
Parametr se používá ke spuštění konkrétního souboru. -Test
Parametr umožňuje zadat testovací scénář, který se má spustit.
Parametry můžete použít následujícími způsoby:
Spouštění testů pro jeden soubor. Může se stát, že budete chtít spouštět testy jen pro jeden soubor, na kterém právě pracujete. Je to proto, že se pak dokážete na vytváření daného souboru šablony snáze soustředit. Další výhodou je fakt, že výstup bude obsahovat méně šumu a ukáže jen to, co vás zajímá. Pomocí parametru
-File
s cestou k souboru (včetně názvu souboru) můžete testy spustit pouze u daného souboru.Důležité
Parametr stále očekává , azuredeploy.json nebo maintemplate.json existuje v zadaném umístění.
Spouštění jednoho typu testu pro všechny soubory. Někdy může být potřeba spustit jen jeden typ testu, abyste se ujistili, že plníte kritéria daného scénáře. Tuto úlohu lze provést pomocí parametru
-Test
. Parametr očekává úplný název testu v uvozovkách; Například prostředky by měly mít umístění.