Zelfstudie: Een sjabloonspecificatie maken met gekoppelde sjablonen
Meer informatie over het maken van een sjabloonspecificatie met een hoofdsjabloon en een gekoppelde sjabloon. U gebruikt sjabloonspecificaties om ARM-sjablonen te delen met andere gebruikers in uw organisatie. In dit artikel wordt beschreven hoe u een sjabloonspecificatie maakt om een hoofdsjabloon en de gekoppelde sjablonen te verpakken met behulp van de relativePath eigenschap van de implementatieresource.
Vereisten
Een Azure-account met een actief abonnement. Gratis een account maken
Notitie
Als u sjabloonspecificaties wilt Azure PowerShell, moet u versie 5.0.0 of hoger installeren. Voor gebruik met Azure CLI hebt u versie 2.14.2 of hoger nodig.
Gekoppelde sjablonen maken
Maak de hoofdsjabloon en de gekoppelde sjabloon.
Als u een sjabloon wilt koppelen, voegt u een implementatieresource toe aan uw hoofdsjabloon. Geef in de eigenschap het relatieve pad van de gekoppelde sjabloon templateLink op in overeenstemming met het pad van de bovenliggende sjabloon.
De gekoppelde sjabloon wordt linkedTemplate.jsop en wordt opgeslagen in een submap met de naam artefacten in het pad waar de hoofdsjabloon wordt opgeslagen. U kunt een van de volgende waarden gebruiken voor relativePath:
./artifacts/linkedTemplate.json/artifacts/linkedTemplate.jsonartifacts/linkedTemplate.json
De eigenschap is altijd relatief ten opzichte van het sjabloonbestand waarin is gedeclareerd, dus als er een andere linkedTemplate2.jsis die wordt aangeroepen vanuit linkedTemplate.jsop en linkedTemplate2.jsop wordt opgeslagen in dezelfde submap artefacten, is het relativePath dat is opgegeven in linkedTemplate.jsop slechts relativePath relativePath linkedTemplate2.json .
Maak de hoofdsjabloon met de volgende JSON. Sla de hoofdsjabloon azuredeploy.jsop uw lokale computer. In deze zelfstudie wordt ervan uitgenomen dat u hebt opgeslagen inc:\Templates\linkedTS\azuredeploy.js pad, maar u kunt elk pad gebruiken.
{ "$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": "[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": { "relativePath": "artifacts/linkedTemplate.json" }, "parameters": { "storageAccountType": { "value": "[parameters('storageAccountType')]" } } } } ] }Notitie
De apiVersion van
Microsoft.Resources/deploymentsmoet 2020-06-01 of hoger zijn.Maak een map met de naam artefacten in de map waarin de hoofdsjabloon wordt opgeslagen.
Maak de gekoppelde sjabloon met de volgende 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": "[concat('store', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-04-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }Sla de sjabloon op linkedTemplate.jsin de map artefacten.
Sjabloonspecificatie maken
Sjablonenspecificaties worden opgeslagen in resourcegroepen. Maak een resourcegroep en maak vervolgens een sjabloonspecificatie met het volgende script. De naam van de sjabloonspecificatie is 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"
Wanneer u klaar bent, kunt u de sjabloonspecificatie bekijken vanuit de Azure Portal of met behulp van de volgende cmdlet:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Sjabloonspecificatie implementeren
U kunt nu de sjabloonspecificatie implementeren. De sjabloonspecificatie wordt op dezelfde manier geïmplementeerd als de sjabloon in de sjabloonspecificatie. Het enige verschil is dat u de resource-id van de sjabloonspecificatie doorgeeft. U gebruikt dezelfde implementatieopdrachten en geeft indien nodig de parameterwaarden voor de sjabloonspecificatie door.
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
Volgende stappen
Zie Zelfstudie: Een sjabloonspecificatie implementeren als gekoppelde sjabloon voor meer informatie over het implementeren van een sjabloonspecificatie als een gekoppelde sjabloon.