Hinzufügen von Flexibilität zu Ihrer Azure Resource Manager-Vorlage mithilfe von Vorlagenfunktionen
In diesem Szenario möchten Sie die Bereitstellung Ihrer Azure Resource Manager-Vorlage (ARM) in verschiedenen Umgebungen so problemlos wie möglich gestalten. Einer der Konfliktbereiche ist die Entwicklung eines eindeutigen Namens für das Azure Storage-Konto.
Zur Behebung dieses Problems erstellen Sie einen Ausdruck mithilfe von ARM-Vorlagenfunktionen.
Was sind ARM-Vorlagenfunktionen?
ARM-Vorlagenfunktionen erhöhen die Flexibilität ihrer ARM-Vorlage durch dynamisches Abrufen von Werten während der Bereitstellung.
Um Funktionen zu verstehen, müssen Sie zuerst Ausdrücke verstehen. Ausdrücke sind Werte, die ausgewertet werden, wenn die Vorlage bereitgestellt wird. Sie beginnen und enden mit eckigen Klammern []
und können eine Zeichenfolge, eine ganze Zahl, einen booleschen Wert, ein Array oder ein Objekt zurückgeben.
Sie haben bereits im vorherigen Modul in diesem Lernpfad mit Ausdrücken in Ihrer Resource Manager-Vorlage gearbeitet. Sie haben beispielsweise Folgendes verwendet:
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
Der Ausdruck ist der Wert des defaultValue:
-Attributs. Beachten Sie, dass dieser Ausdruck die ARM-Vorlagenfunktion resourceGroup()
enthält. Diese Funktion gibt Informationen zur Ressourcengruppe zurück, für die diese Vorlage bereitgestellt wird. .location
ruft eine Eigenschaft aus dem Objekt ab, das von dieser Funktion zurückgegeben wird. Funktionen ermöglichen das Bereitstellen von Werten, die dynamisch benötigt werden.
Arbeiten mit ARM-Vorlagenfunktionen
Es gibt einige Regeln für das Arbeiten mit Funktionen:
Verwenden Sie einfache Anführungszeichen, wenn Sie einer Funktion einen Zeichenfolgenwert übergeben. Ein Beispiel:
concat('storage',uniqueString(resourceGroup().id))
. Die Funktion istconcat
, und die Zeichenfolge, die Sie an die Funktion übergeben, ist'storage'
.Damit Sie mit Literalwerten in Vorlagenfunktionen arbeiten können, benötigen Sie Escapezeichen. Das Escapezeichen unterscheidet sich je nachdem, wofür es verwendet wird.
Zur Festlegung einer Eigenschaft auf NULL, können Sie
null
oder[json('null')]
verwenden. Die JSON-Funktion gibt ein leeres Objekt zurück, wenn Sie NULL als Parameter angeben."stringValue": null, "objectValue": "[json('null')]"
Resource Manager stellt mehrere ARM-Vorlagenfunktionen bereit. Die Funktionen werden in Gruppen basierend auf ihrem Typ aufgeführt:
- Arrayfunktionen zum Arbeiten mit Arrays. Beispielsweise
first
undlast
. - Vergleichsfunktionen zum Durchführen von Vergleichen in Ihren Vorlagen. Beispielsweise
equals
undgreater
. - Datumsfunktionen zum Arbeiten mit Datumsangaben. Beispielsweise
utcNow
unddateTimeAdd
. - Bereitstellungswertfunktionen, um Werte aus den Abschnitten der Vorlage und Werte in Bezug auf die Bereitstellung abzurufen. Beispielsweise
environment
undparameters
. - Logische Funktionen zum Arbeiten mit logischen Bedingungen. Beispielsweise
if
undnot
. - Numerische Funktionen zum Arbeiten mit Integerwerten. Beispiel:
max
undmod
. - Objektfunktionen für das Arbeiten mit Objekten. Beispiel:
contains
undlength
. - Ressourcenfunktionen zum Abrufen von Ressourcenwerten. Beispielsweise
resourceGroup
undsubscription
. - Zeichenfolgenfunktionen zum Arbeiten mit Zeichenfolgen. Beispielsweise
length
undstartsWith
.
Verwenden mehrerer Funktionen in einem Ausdruck
Sie können mehrere Vorlagenfunktionen in Kombination verwenden, um eigene Ausdrücke zu erstellen. In diesem Szenario müssen Sie einen Ausdruck erstellen, der einen eindeutigen Namen pro Ressourcengruppe erstellt, indem eine Präfixeingabe und ein Hash der Ressourcengruppen-ID kombiniert werden. Dieser Ausdruck führt zu Speicherkontonamen wie dev2hu6fktr577wh
und staging5his8hgr67tt5
. Sie können diesen Zeichenfolgenwert mit vier Funktionen erstellen. Beispiel:
"[toLower(concat('Storage',uniqueString(resourceGroup().id)))]"
Sehen wir uns diesen Ausdruck näher an.
Beginnend mit concat nimmt diese Funktion eine beliebige Anzahl von Argumenten an und kann entweder Zeichenfolgen oder Arrays als Parameter akzeptieren. Hier verwenden Sie eine Literalzeichenfolge "Storage"
und verketten sie mit dem Ergebnis einer anderen Funktion uniqueString. Die uniqueString
-Funktion erstellt basierend auf den Parametern eine deterministische Hashzeichenfolge. In diesem Ausdruck erstellen Sie einen Hash der aktuellen Ressourcengruppen-ID mithilfe einer anderen Funktion, resourceGroup.
Hier sehen Sie die Ausgabe des bisher Erläuterten:
Zur Einhaltung der Namenskonventionen darf diese Zeichenfolge nur aus Kleinbuchstaben bestehen. Hier fügen Sie die Funktion toLower als äußere Funktion hinzu.
Die sich ergebende Zeichenfolge sieht wie folgt aus: