Flexibiliteit toevoegen aan uw Azure Resource Manager-sjabloon met behulp van sjabloonfuncties

Voltooid

In dit scenario wilt u de sjabloon van Azure Resource Manager (ARM) zo eenvoudig mogelijk implementeren in verschillende omgevingen. Een knelpunt is het bedenken van een unieke naam voor het Azure Storage-account.

U besluit een expressie te maken met ARM-sjabloonfuncties om dit probleem op te lossen.

Wat zijn ARM-sjabloonfuncties?

Met ARM-sjabloonfuncties kunt u flexibiliteit toevoegen aan uw ARM-sjabloon door dynamisch waarden te verkrijgen tijdens de implementatie.

Als u meer wilt weten over functies, moet u eerst de expressies begrijpen. Expressies zijn waarden die worden geëvalueerd als de sjabloon wordt geïmplementeerd. Ze beginnen en eindigen met vierkante haken []en kunnen een tekenreeks, geheel getal, Booleaanse waarde, matrix of object retourneren.

In de vorige module in dit leertraject hebt u al gewerkt met expressies in uw Resource Manager-sjabloon. U hebt bijvoorbeeld het volgende gebruikt:

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

De expressie is de waarde van het kernmerk defaultValue:. U ziet dat deze expressie de ARM-sjabloonfunctieresourceGroup() bevat. Deze functie retourneert informatie over de resourcegroep waarnaar deze sjabloon wordt geïmplementeerd. De .location haalt één eigenschap op uit het object dat door de functie wordt geretourneerd. Met functies kunt u dynamisch waarden maken die u nodig hebt.

Hoe kan ik werken met ARM-sjabloonfuncties?

Er zijn enkele regels die u moet volgen wanneer u werkt met-functies:

  • Gebruik enkele aanhalingstekens wanneer u een tekenreekswaarde doorgeeft in een functie. Hier is een voorbeeld: concat('storage',uniqueString(resourceGroup().id)). De functie is concat, en de tekenreeks die u doorgeeft aan de functie is 'storage'.

  • Als u wilt werken met letterlijke waarden in sjabloonfuncties, hebt u escape-tekens nodig. Het escape-teken verschilt, afhankelijk van waarvoor u escape nodig hebt.

  • U kunt null of [json('null')] gebruiken om een eigenschap in te stellen op nul. Met de json-functie wordt een leeg object geretourneerd wanneer u nul opgeeft als de parameter.

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

Resource Manager biedt u verschillende ARM-sjabloonfuncties. De functies worden weergegeven in groepen op basis van het type:

  • Matrixfuncties voor het werken met matrices. Bijvoorbeeld first en last.
  • Vergelijkingsfuncties voor het maken van vergelijkingen in uw sjablonen. Bijvoorbeeld equals en greater.
  • Datumfuncties voor het werken met datums. Bijvoorbeeld utcNow en dateTimeAdd.
  • Implementatiewaarde-functies voor het ophalen van waarden uit secties van de sjabloon en waarden die betrekking hebben op de implementatie. Bijvoorbeeld environment en parameters.
  • Logische functies voor het werken met logische voorwaarden. Bijvoorbeeld if en not.
  • Numerieke functies voor het werken met gehele getallen. Bijvoorbeeld max en mod.
  • Objectfuncties voor het werken met objecten. Bijvoorbeeld contains en length.
  • Resourcefuncties voor het ophalen van resourcewaarden. Bijvoorbeeld resourceGroup en subscription.
  • Reeksfuncties voor het werken met reeksen. Bijvoorbeeld length en startsWith.

Hoe kan ik verschillende functies in één expressie gebruiken?

U kunt verschillende sjabloonfuncties gebruiken om uw eigen expressies te maken. In dit scenario moet u een expressie maken waarmee per resourcegroep een unieke naam wordt gemaakt door een voorvoegsel te combineren met een hash van de resourcegroep-id. Deze expressie resulteert in opslagaccountnamen als dev2hu6fktr577wh en staging5his8hgr67tt5. U kunt vier functies gebruiken om deze tekenreekswaarde te maken. Voorbeeld:

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

Laten we deze expressie eens doorlopen.

Vanaf samenvoeging heeft deze functie een willekeurig aantal argumenten en kan deze tekenreeksen of matrices voor de parameters accepteren. Hier gebruikt u een letterlijke tekenreeks "Storage" en voegt u deze samen met het resultaat van een andere functie, uniqueString. De functie uniqueString maakt een deterministische hash-tekenreeks op basis van de parameters. In deze expressie maakt u een hash van de huidige resourcegroep-id met behulp van een andere functie, resourceGroup.

Hier volgt de uitvoer van wat we tot nu toe hebben besproken:

Picture of a string created by concatenating the word Storage with a 13-character hash that contains both uppercase and lowercase letters.

Als u wilt voldoen aan de voorwaarden voor naamgeving, moet de tekenreeks uit alleen kleine letters bestaan. Hier voegt u de functie toLower toe als de buitenste functie.

De resulterende tekenreeks ziet er zo uit:

Picture of a string created by concatenating the word Storage with a 13-character hash, and then converting all letters to lowercase.