Hinzufügen von Flexibilität zu Ihrer Azure Resource Manager-Vorlage mithilfe von Vorlagenfunktionen

Abgeschlossen

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 ist concat, 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 und last.
  • Vergleichsfunktionen zum Durchführen von Vergleichen in Ihren Vorlagen. Beispielsweise equals und greater.
  • Datumsfunktionen zum Arbeiten mit Datumsangaben. Beispielsweise utcNow und dateTimeAdd.
  • Bereitstellungswertfunktionen, um Werte aus den Abschnitten der Vorlage und Werte in Bezug auf die Bereitstellung abzurufen. Beispielsweise environment und parameters.
  • Logische Funktionen zum Arbeiten mit logischen Bedingungen. Beispielsweise if und not.
  • Numerische Funktionen zum Arbeiten mit Integerwerten. Beispiel: max und mod.
  • Objektfunktionen für das Arbeiten mit Objekten. Beispiel: contains und length.
  • Ressourcenfunktionen zum Abrufen von Ressourcenwerten. Beispielsweise resourceGroup und subscription.
  • Zeichenfolgenfunktionen zum Arbeiten mit Zeichenfolgen. Beispielsweise length und startsWith.

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:

Abbildung einer Zeichenfolge, die durch Verkettung des Worts „Storage“ mit einem aus 13 Zeichen bestehenden Hashwert erstellt wurde, der sowohl Groß- als auch Kleinbuchstaben enthält

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:

Abbildung einer Zeichenfolge, die durch Verkettung des Worts „Speicher“ mit einem aus 13 Zeichen bestehenden Hashwert erstellt wurde, mit anschließender Konvertierung aller Buchstaben in Kleinbuchstaben