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
.
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.Erstellen Sie ein Verzeichnis namens artifacts in dem Ordner, in dem die Hauptvorlage gespeichert ist.
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')]" } } }
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.