Tutorial: Erstellen einer Vorlagenspezifikation mit verknüpften Vorlagen

Erfahren Sie, wie Sie eine Vorlagenspezifikation mit einer Hauptvorlage und einer verknüpften Vorlage erstellen. Mithilfe von Vorlagenspezifikationen teilen Sie ARM-Vorlagen mit anderen Benutzer in Ihrer Organisation. In diesem Artikel erfahren Sie, wie Sie eine Vorlagenspezifikation erstellen, um mithilfe der Eigenschaft relativePath der Bereitstellungsressource ein Paket mit einer Hauptvorlage und ihren verknüpften Vorlagen zu erstellen.

Voraussetzungen

Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.

Hinweis

Um Vorlagenspezifikationen mit Azure PowerShell zu verwenden, müssen Sie mindestens Version 5.0.0 installieren. Zur Nutzung mit der Azure-Befehlszeilenschnittstelle muss mindestens Version 2.14.2 verwendet werden.

Erstellen verknüpfter Vorlagen

Erstellen Sie die Hauptvorlage und die verknüpfte Vorlage.

Zum Verknüpfen einer Vorlage fügen Sie der Hauptvorlage eine Bereitstellungsressource hinzu. Geben Sie bei der Eigenschaft templateLink den relativen Pfad der verknüpften Vorlage basierend auf dem Pfad der übergeordneten Vorlage an.

Die verknüpfte Vorlage heißt linkedTemplate.json und ist in einem Unterordner namens artifacts unter dem Pfad gespeichert, unter dem auch die Hauptvorlage gespeichert ist. Sie können einen der folgenden Werte für relativePath verwenden:

  • ./artifacts/linkedTemplate.json
  • /artifacts/linkedTemplate.json
  • artifacts/linkedTemplate.json

Die Eigenschaft relativePath ist immer relativ zu der Vorlagendatei, in der relativePath deklariert wird. Wenn also eine andere Datei namens „linkedTemplate2.json“ in linkedTemplate.json aufgerufen wird und linkedTemplate2.json ebenfalls im Unterordner „artifacts“ gespeichert ist, lautet der in linkedTemplate.json angegebene Wert für relativePath nur linkedTemplate2.json.

  1. Erstellen Sie die Hauptvorlage mit dem folgenden JSON-Code. Speichern Sie sie anschließend als azuredeploy.json auf Ihrem lokalen Computer. In diesem Tutorial wird davon ausgegangen, dass die Speicherung unter dem Pfad c:\Templates\linkedTS\azuredeploy.json erfolgt ist. Sie können jedoch einen beliebigen Pfad verwenden.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "location": {
          "type": "string",
          "defaultValue": "westus2",
          "metadata":{
            "description": "Specify the location for the resources."
          }
        },
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "metadata":{
            "description": "Specify the storage account type."
          }
        }
      },
      "variables": {
        "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Web/serverfarms",
          "apiVersion": "2022-09-01",
          "name": "[variables('appServicePlanName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "B1",
            "tier": "Basic",
            "size": "B1",
            "family": "B",
            "capacity": 1
          },
          "kind": "linux",
          "properties": {
            "perSiteScaling": false,
            "reserved": true,
            "targetWorkerCount": 0,
            "targetWorkerSizeId": 0
          }
        },
        {
          "type": "Microsoft.Resources/deployments",
          "apiVersion": "2022-09-01",
          "name": "createStorage",
          "properties": {
            "mode": "Incremental",
            "templateLink": {
              "relativePath": "artifacts/linkedTemplate.json"
            },
            "parameters": {
              "storageAccountType": {
                "value": "[parameters('storageAccountType')]"
              }
            }
          }
        }
      ]
    }
    

    Hinweis

    Die apiVersion von Microsoft.Resources/deployments muss 2020-06-01 oder höher sein.

  2. Erstellen Sie ein Verzeichnis namens artifacts in dem Ordner, in dem die Hauptvorlage gespeichert ist.

  3. Erstellen Sie die verknüpfte Vorlage mit dem folgenden JSON-Code:

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageAccountType": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_ZRS",
            "Premium_LRS"
          ],
          "metadata": {
            "description": "Storage Account type"
          }
        },
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location for all resources."
          }
        }
      },
      "variables": {
        "storageAccountName": "[format('store{0}', uniquestring(resourceGroup().id))]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2022-09-01",
          "name": "[variables('storageAccountName')]",
          "location": "[parameters('location')]",
          "sku": {
            "name": "[parameters('storageAccountType')]"
          },
          "kind": "StorageV2",
          "properties": {}
        }
      ],
      "outputs": {
        "storageAccountName": {
          "type": "string",
          "value": "[variables('storageAccountName')]"
        }
      }
    }
    
  4. Speichern Sie die Vorlage als linkedTemplate.json im Ordner artifacts.

Erstellen von Vorlagenspezifikationen

Vorlagenspezifikationen werden in Ressourcengruppen gespeichert. Erstellen Sie mit dem folgenden Skript eine Ressourcengruppe und anschließend eine Vorlagenspezifikation. Der Name der Vorlagenspezifikation ist webSpec.

New-AzResourceGroup `
  -Name templateSpecRG `
  -Location westus2

New-AzTemplateSpec `
  -Name webSpec `
  -Version "1.0.0.0" `
  -ResourceGroupName templateSpecRG `
  -Location westus2 `
  -TemplateFile "c:\Templates\linkedTS\azuredeploy.json"

Wenn Sie fertig sind, können Sie die Vorlagenspezifikation über das Azure-Portal oder das folgende Cmdlet anzeigen:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Bereitstellen der Vorlagenspezifikationen

Jetzt können Sie die Vorlagenspezifikation bereitstellen. Das Bereitstellen der Vorlagenspezifikation gestaltet sich genauso wie die Bereitstellung der enthaltenen Vorlage, mit der Ausnahme, dass Sie die Ressourcen-ID der Vorlagenspezifikation übergeben. Sie verwenden dieselben Bereitstellungsbefehle und übergeben bei Bedarf Parameterwerte für die Vorlagenspezifikation.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id

New-AzResourceGroupDeployment `
  -TemplateSpecId $id `
  -ResourceGroupName webRG

Nächste Schritte

Weitere Informationen zur Bereitstellung einer Vorlagenspezifikation als verknüpfte Vorlage finden Sie unter Tutorial: Bereitstellen einer Vorlagenspezifikation als verknüpfte Vorlage.