Zvýšení flexibility šablony Azure Resource Manageru pomocí funkcí šablon

Dokončeno

V tomto scénáři chcete, aby nasazení šablony Azure Resource Manageru (ARM) do různých prostředí probíhalo co nejjednodušeji. Problematickou oblastí je jedinečný název účtu úložiště Azure.

Rozhodnete se problém vyřešit vytvořením výrazu pomocí funkcí šablony ARM.

Co jsou funkce šablony ARM?

Funkce šablony ARM zvyšují flexibilitu šablony ARM pomocí dynamického získávání hodnot během nasazení.

Pokud chcete porozumět funkcím, musíte nejdřív porozumět výrazům. Výrazy jsou hodnoty, které se vyhodnocují, když je šablona nasazená. Začínají a končí hranatými závorkami []a můžou vrátit řetězec, celé číslo, logickou hodnotu, pole nebo objekt.

V předchozím modulu tohoto studijního programu jste už pracovali s výrazy v šabloně Resource Manageru. Použili jste například:

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
},

Výraz je hodnota atributu defaultValue:. Všimněte si, že tento výraz obsahuje funkci šablony ARM resourceGroup(). Tato funkce vrátí informace o skupině prostředků, do které se tato šablona nasazuje. .location načte jednu vlastnost z objektu vráceného touto funkcí. Funkce umožňují dynamicky vytvářet hodnoty, které potřebujete.

Jak pracovat s funkcemi šablony ARM?

Při práci s funkcemi platí několik pravidel:

  • Při předávání řetězcové hodnoty do funkce používejte jednoduché uvozovky. Následuje příklad: concat('storage',uniqueString(resourceGroup().id)). Funkce je concata řetězec, který funkci předáváte, je 'storage'.

  • Pro práci s hodnotami literálů ve funkcích šablony potřebujete řídicí znaky. Řídicí znak se liší v závislosti na tom, co řídíte.

  • Pokud chcete nastavit vlastnost na hodnotu null, můžete použít null nebo [json('null')]. Když jako parametr zadáte hodnotu null, funkce JSON vrátí prázdný objekt.

    "stringValue": null,
    "objectValue": "[json('null')]"
    

Resource Manager vám poskytuje několik funkcí šablony ARM. Funkce jsou uvedené ve skupinách podle svých typů:

  • Funkce polí pro práci s poli. Příklad: first a last.
  • Porovnávací funkce pro porovnávání v šablonách. Příklad: equals a greater.
  • Funkce data pro práci s daty. Příklad: utcNow a dateTimeAdd.
  • Funkce hodnot nasazení pro získání hodnot z oddílů šablony a hodnot souvisejících s nasazením. Příklad: environment a parameters.
  • Logické funkce pro práci s logickými podmínkami. Příklad: if a not.
  • Číselné funkce pro práci s celými čísly. Příklad: max a mod.
  • Funkce objektů pro práci s objekty. Příklad: contains a length.
  • Funkce prostředků pro získání hodnot prostředků. Příklad: resourceGroup a subscription.
  • Funkce řetězců pro práci s řetězci. Příklad: length a startsWith.

Jak použít několik funkcí v jednom výrazu?

K vytvoření vlastních výrazů můžete použít několik funkcí šablony dohromady. V tomto scénáři potřebujete sestavit výraz, který vytvoří jedinečný název pro každou skupinu prostředků tím, že sloučí vstup ve formě předpony s hodnotou hash ID skupiny prostředků. Výsledkem výrazu jsou názvy účtů úložiště jako dev2hu6fktr577wh a staging5his8hgr67tt5. K vytvoření této řetězcové hodnoty můžete použít čtyři funkce. Příklad:

"[toLower(concat('Storage',uniqueString(resourceGroup().id)))]"

Pojďme si tento výraz projít.

Počínaje zřetězením přebírá tato funkce libovolný počet argumentů a pro parametry může přijímat řetězce nebo pole. Tady použijete řetězec literálu "Storage" a zřetězíte ho s výsledkem jiné funkce, uniqueString. Funkce uniqueString vytvoří deterministický řetězec hash na základě parametrů. V tomto výrazu vytvoříte hodnotu hash aktuálního ID skupiny prostředků pomocí jiné funkce, resourceGroup.

Tady je výstup z toho, co jsme zatím probrali:

Obrázek řetězce vytvořeného zřetězením slova Storage s hodnotou hash o 13 znacích s velkými i malými písmeny

Kvůli dodržení zásad vytváření názvů je nutné, aby byl tento řetězec malými písmeny. Tady přidáte funkci toLower jako vnější funkci.

Výsledný řetězec vypadá takto:

Obrázek řetězce vytvořeného zřetězením slova Storage s hodnotou hash 13 znaků a následným převodem všech písmen na malá písmena