Självstudie: Skapa en mallspecifikation med länkade mallar
Lär dig hur du skapar en mallspecifikation med en huvudmall och en länkad mall. Du använder mallspecifikationer för att dela ARM-mallar med andra användare i din organisation. Den här artikeln visar hur du skapar en mallspecifikation för att paketera en huvudmall och dess länkade mallar med hjälp relativePath
av egenskapen för distributionsresursen.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Kommentar
Om du vill använda mallspecifikationer med Azure PowerShell måste du installera version 5.0.0 eller senare. Om du vill använda det med Azure CLI använder du version 2.14.2 eller senare.
Skapa länkade mallar
Skapa huvudmallen och den länkade mallen.
Om du vill länka en mall lägger du till en distributionsresurs i huvudmallen. I egenskapen templateLink
anger du den relativa sökvägen för den länkade mallen i enlighet med sökvägen till den överordnade mallen.
Den länkade mallen kallas linkedTemplate.json och lagras i en undermapp som kallas artefakter i sökvägen där huvudmallen lagras. Du kan använda något av följande värden för relativePath:
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
Egenskapen relativePath
är alltid relativ till mallfilen där relativePath
deklareras, så om det finns en annan linkedTemplate2.json som anropas från linkedTemplate.json och linkedTemplate2.json lagras i samma artefaktundermapp är den relativePath som anges i linkedTemplate.json bara linkedTemplate2.json
.
Skapa huvudmallen med följande JSON. Spara huvudmallen som azuredeploy.json till den lokala datorn. Den här självstudien förutsätter att du har sparat en sökväg c:\Templates\linkedTS\azuredeploy.json men du kan använda valfri sökväg.
{ "$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')]" } } } } ] }
Kommentar
ApiVersion för
Microsoft.Resources/deployments
måste vara 2020-06-01 eller senare.Skapa en katalog med namnet artifacts i mappen där huvudmallen sparas.
Skapa den länkade mallen med följande 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')]" } } }
Spara mallen som linkedTemplate.json i mappen artifacts .
Skapa mallspecifikation
Mallspecifikationer lagras i resursgrupper. Skapa en resursgrupp och skapa sedan en mallspecifikation med följande skript. Mallspecifikationens namn är 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"
När du är klar kan du visa mallspecifikationen från Azure-portalen eller med hjälp av följande cmdlet:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Distribuera mallspecifikation
Nu kan du distribuera mallspecifikationen. Att distribuera mallspecifikationen är precis som att distribuera mallen som den innehåller, förutom att du skickar in resurs-ID:t för mallspecifikationen. Du använder samma distributionskommandon och skickar vid behov in parametervärden för mallspecifikationen.
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ästa steg
Mer information om hur du distribuerar en mallspecifikation som en länkad mall finns i Självstudie: Distribuera en mallspecifikation som en länkad mall.