Erkunden von Vorlagenkomponenten

Abgeschlossen

Azure Resource Manager-Vorlagen werden in JSON geschrieben. Dadurch können Sie Daten als Text ausdrücken, die als Objekt (z. B. als VM) gespeichert werden.

Ein JSON-Dokument ist im Wesentlichen eine Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel ist eine Zeichenfolge, deren Werte wie folgt sein können:

  • Eine Zeichenfolge.
  • Eine Zahl.
  • Ein boolescher Ausdruck.
  • Eine Werteliste.
  • Ein Objekt (eine Auflistung anderer Schlüssel-Wert-Paare).

Eine Resource Manager-Vorlage kann Abschnitte enthalten, die mit JSON-Notation ausgedrückt werden, aber nicht mit der JSON-Sprache selbst verknüpft sind:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

Lassen Sie uns jeden dieser Abschnitte etwas genauer betrachten.

Parameter

In diesem Abschnitt legen Sie fest, welche Werte beim Ausführen der Vorlage konfigurierbar sind.

Sie können beispielsweise Benutzern der Vorlage erlauben, einen Benutzernamen, ein Kennwort oder einen Domänennamen festzulegen.

Dieses Beispiel zeigt zwei Parameter: einen für den Benutzernamen einer VM und einen für das zugehörige Kennwort:

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Variablen

In diesem Abschnitt definieren Sie Werte, die in der gesamten Vorlage verwendet werden.

Variablen erleichtern die Pflege Ihrer Vorlagen.

Beispielsweise können Sie einen Namen für ein Speicherkonto einmalig als Variable definieren und dann diese Variable in der gesamten Vorlage verwenden.

Wenn sich der Name des Speicherkontos ändert, müssen Sie die Variable nur einmal aktualisieren.

Es folgt ein Beispiel, das einige Variablen veranschaulicht, die Netzwerkfunktionen einer VM beschreiben:

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Functions

In diesem Abschnitt definieren Sie Prozeduren, die nicht in der gesamten Vorlage wiederholt werden sollen.

Ähnlich wie Variablen erleichtern Funktionen die Pflege Ihrer Vorlagen.

Nachfolgend sehen ein Beispiel, das eine Funktion zum Erzeugen eines eindeutigen Namens erstellt, die beim Anlegen von Ressourcen mit Anforderungen einer global eindeutigen Benennung verwendet werden kann:

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Ressourcen

In diesem Abschnitt definieren Sie die Azure-Ressourcen, aus denen Ihre Bereitstellung besteht.

Hier ein Beispiel, wie eine öffentliche IP-Adresse erstellt wird:

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Der Typ der Ressource ist hier Microsoft.Network/publicIPAddresses.

Der Name wird dem Abschnitt „variables“ (Variablen) und ihr Standort (oder die Azure-Region) dem Abschnitt parameters (Parameter) entnommen.

Da sich Ressourcentypen im Laufe der Zeit ändern können, bezieht sich apiVersion auf die Version des Ressourcentyps, den Sie verwenden möchten.

Wenn sich Ressourcentypen weiterentwickeln, können Sie Ihre Vorlagen so anpassen, dass sie mit den neuesten Features arbeiten.

Ausgaben

In diesem Abschnitt definieren Sie alle Informationen, die Sie erhalten möchten, wenn die Vorlage ausgeführt wird.

Beispielsweise können Sie die IP-Adresse oder den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) Ihres virtuellen Computers erhalten – die Informationen, die Sie erst erfahren, wenn die Bereitstellung ausgeführt wird.

Es folgt ein Beispiel, das eine Ausgabe mit dem Namen hostname veranschaulicht.

Der FQDN-Wert wird den Einstellungen der öffentlichen IP-Adresse der VM entnommen:

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}