Freigeben über


Tutorial: Bereitstellen einer Vorlagenspezifikation als verknüpfte Vorlage

Erfahren Sie, wie Sie eine vorhandene Vorlagenspezifikation mithilfe einer verknüpften Bereitstellung bereitstellen. Verwenden Sie Vorlagenspezifikationen, um ARM-Vorlagen mit anderen Benutzer*innen in Ihrer Organisation zu teilen. Nachdem Sie eine Vorlagenspezifikation erstellen, können Sie sie 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

Informationen zum Erstellen einer Vorlagenspezifikation für die Bereitstellung eines Speicherkontos finden Sie unter Schnellstart: Erstellen und Bereitstellen von Vorlagenspezifikationen. Sie benötigen den Ressourcengruppennamen der Vorlagenspezifikation, den Vorlagenspezifikationsnamen und die Vorlagenspezifikationsversion für den nächsten Abschnitt.

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 Sie die Vorlage in c:\Templates\deployTS\azuredeploy.json speichern, 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 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.