Flexibiliteit toevoegen aan uw Azure Resource Manager-sjabloon met behulp van sjabloonfuncties
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 isconcat
, 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
enlast
. -
Vergelijkingsfuncties voor het maken van vergelijkingen in uw sjablonen. Bijvoorbeeld
equals
engreater
. -
Datumfuncties voor het werken met datums. Bijvoorbeeld
utcNow
endateTimeAdd
. -
Implementatiewaarde-functies voor het ophalen van waarden uit secties van de sjabloon en waarden die betrekking hebben op de implementatie. Bijvoorbeeld
environment
enparameters
. -
Logische functies voor het werken met logische voorwaarden. Bijvoorbeeld
if
ennot
. -
Numerieke functies voor het werken met gehele getallen. Bijvoorbeeld
max
enmod
. -
Objectfuncties voor het werken met objecten. Bijvoorbeeld
contains
enlength
. -
Resourcefuncties voor het ophalen van resourcewaarden. Bijvoorbeeld
resourceGroup
ensubscription
. -
Reeksfuncties voor het werken met reeksen. Bijvoorbeeld
length
enstartsWith
.
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:
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: