Tutorial: Bereitstellen einer Vorlagenspezifikation als verknüpfte Vorlage

Erfahren Sie, wie Sie eine vorhandene Vorlagenspezifikation mithilfe einer verknüpften Bereitstellung bereitstellen. Mithilfe von Vorlagenspezifikationen teilen Sie ARM-Vorlagen mit anderen Benutzer in Ihrer Organisation. Nachdem Sie eine Vorlagenspezifikation erstellt haben, können Sie die Vorlagenspezifikation mithilfe von Azure PowerShell oder Azure CLI bereitstellen. Sie können die Vorlagenspezifikation auch als Teil ihrer Projektmappe bereitstellen, indem Sie eine verknüpfte Vorlage verwenden.

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 Verwendung mit der Azure CLI verwenden Sie mindestens Version 2.14.2.

Erstellen einer Vorlagenspezifikation

Gehen Sie wie unter Schnellstart: Erstellen und Bereitstellen von Vorlagenspezifikationen vor, um eine Vorlagenspezifikation für die Bereitstellung eines Speicherkontos zu erstellen. Im nächsten Abschnitt benötigen Sie den Ressourcengruppennamen der Vorlagenspezifikation, den Namen der Vorlagenspezifikation und die Version der Vorlagenspezifikation.

Erstellen der Hauptvorlage

Zum Bereitstellen einer Vorlagenspezifikation in einer ARM-Vorlage fügen Sie Ihrer Hauptvorlage eine Bereitstellungsressource hinzu. Geben Sie in der templateLink-Eigenschaft die Ressourcen-ID einer Vorlagenspezifikation an. Erstellen Sie eine Vorlage mit dem folgenden JSON-Code namens azuredeploy.json. In diesem Tutorial wird davon ausgegangen, dass die Speicherung im Pfad c:\Templates\deployTS\azuredeploy.json erfolgt ist, doch Sie können 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": "[resourceGroup().location]"
    },
    "tsResourceGroup":{
      "type": "string",
      "metadata": {
        "Description": "Specifies the resource group name of the template spec."
      }
    },
    "tsName": {
      "type": "string",
      "metadata": {
        "Description": "Specifies the name of the template spec."
      }
    },
    "tsVersion": {
      "type": "string",
      "defaultValue": "1.0.0.0",
      "metadata": {
        "Description": "Specifies the version the template spec."
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "metadata": {
        "Description": "Specifies the storage account type required by the template spec."
      }
    }
  },
  "variables": {
    "appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2016-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": "2020-10-01",
      "name": "createStorage",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
        },
        "parameters": {
          "storageAccountType": {
            "value": "[parameters('storageAccountType')]"
          }
        }
      }
    }
  ],
  "outputs": {
    "templateSpecId": {
      "type": "string",
      "value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
    }
  }
}

Die Vorlagenspezifikations-ID wird mithilfe der resourceID()-Funktion generiert. Das Ressourcengruppenargument in der resourceID()-Funktion ist optional, wenn sich die Vorlagenspezifikation (templateSpec) in derselben Ressourcengruppe der aktuellen Bereitstellung befindet. Sie können die Ressourcen-ID auch direkt als Parameter übergeben. Zum Abrufen der ID verwenden Sie:

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

Die Syntax zum Übergeben von Parametern an die Vorlagenspezifikation lautet:

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

Hinweis

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

Bereitstellen der Vorlage

Wenn Sie die verknüpfte Vorlage bereitstellen, stellt sie sowohl die Webanwendung als auch das Speicherkonto bereit. Die Bereitstellung ist mit der Bereitstellung anderer ARM-Vorlagen identisch.

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

Nächste Schritte

Weitere Informationen zum Erstellen einer Vorlagenspezifikation, die verknüpfte Vorlagen umfasst, finden Sie unter Erstellen einer Vorlagenspezifikation einer verknüpften Vorlage.