Freigeben über


Lernprogramm: Erstellen einer Vorlagenspezifikation mit verknüpften Vorlagen

Erfahren Sie, wie Sie eine Vorlagenspezifikation mit einer Hauptvorlage und einer verknüpften Vorlage erstellen. Sie verwenden Vorlagenspezifikationen, um ARM-Vorlagen für andere Benutzer in Ihrer Organisation freizugeben. In diesem Artikel wird erläutert, wie Sie eine Vorlagenspezifikation zum Packen einer Hauptvorlage und der verknüpften Vorlagen mithilfe relativePath der Eigenschaft der Bereitstellungsressource erstellen.

Voraussetzungen

Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.

Hinweis

Um Vorlagenspezifikationen mit Azure PowerShell zu verwenden, müssen Sie Version 5.0.0 oder höher installieren. Zur Verwendung mit der Azure CLI verwenden Sie mindestens Version 2.14.2.

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 in der templateLink Eigenschaft den relativen Pfad der verknüpften Vorlage gemäß dem Pfad der übergeordneten Vorlage an.

Die verknüpfte Vorlage wird linkedTemplate.jsongenannt und wird in einem Unterordner gespeichert, der als Artefakte bezeichnet wird, im Pfad, in dem die Hauptvorlage gespeichert ist. Sie können einen der folgenden Werte für den relativePath verwenden.

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

Die relativePath-Eigenschaft ist immer relativ zu der Vorlagendatei, in der relativePath deklariert wird. Daher, wenn ein weiterer linkedTemplate2.json vorhanden ist, der von linkedTemplate.json aufgerufen wird und linkedTemplate2.json im gleichen Artefaktunterordner gespeichert wird, lautet der relativePath, der in linkedTemplate.json angegeben ist, einfach linkedTemplate2.json.

  1. Erstellen Sie die Hauptvorlage mit dem folgenden JSON.Create the main template with the following JSON. Speichern Sie die Hauptvorlage 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 Artefakte im Ordner, in dem die Hauptvorlage gespeichert wird.

  3. Erstellen Sie die verknüpfte Vorlage mit dem folgenden JSON:Create the linked template with the following JSON:

    {
      "$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 Artefakte-Ordner.

Erstellen von Vorlagenspezifikationen

Vorlagenspezifikationen werden in Ressourcengruppen gespeichert. Erstellen Sie eine Ressourcengruppe, und erstellen Sie dann eine Vorlagenspezifikation mit dem folgenden Skript. Der Vorlagenspezifikationsname 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 mithilfe des folgenden Cmdlets anzeigen:

Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec

Bereitstellen der Vorlagenspezifikationen

Sie können jetzt die Vorlagenspezifikation bereitstellen. Die Bereitstellung der Vorlagenspezifikation ähnelt der Bereitstellung der darin 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.