Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni su come creare una specifica di modello con un modello principale e un modello collegato. Usi le specifiche dei modelli per condividere i modelli di ARM con altri utenti della tua organizzazione. Questo articolo illustra come creare una specifica di modello per creare un pacchetto di un modello principale e i relativi modelli collegati usando la relativePath
proprietà della risorsa di distribuzione.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare gratuitamente un account.
Annotazioni
Per usare le specifiche di modello con Azure PowerShell, è necessario installare la versione 5.0.0 o successiva. Per usarlo con l'interfaccia della riga di comando di Azure, usare la versione 2.14.2 o successiva.
Creare modelli collegati
Creare il modello principale e il modello collegato.
Per collegare un modello, aggiungere una risorsa distribuzioni al modello principale.
templateLink
Nella proprietà specificare il percorso relativo del modello collegato in base al percorso del modello padre.
Il modello collegato viene chiamato linkedTemplate.jsone viene archiviato in una sottocartella denominata artefatti nel percorso in cui è archiviato il modello principale. Per relativePath è possibile usare uno dei valori seguenti:
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
La relativePath
proprietà è sempre relativa al file modello in cui relativePath
viene dichiarata, quindi se è presente un altro linkedTemplate2.json chiamato da linkedTemplate.json e linkedTemplate2.json viene archiviato nella stessa sottocartella degli artefatti, il relativoPath specificato in linkedTemplate.json è solo linkedTemplate2.json
.
Creare il modello principale con il codice JSON seguente. Salvare il modello principale come azuredeploy.json nel computer locale. Questa esercitazione presuppone che tu abbia salvato in un percorso c:\Templates\linkedTS\azuredeploy.js, ma puoi usare qualsiasi percorso.
{ "$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')]" } } } } ] }
Annotazioni
ApiVersion deve
Microsoft.Resources/deployments
essere 2020-06-01 o successiva.Creare una directory denominata artefatti nella cartella in cui viene salvato il modello principale.
Creare il modello collegato con il codice JSON seguente:
{ "$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')]" } } }
Salvare il modello come linkedTemplate.json nella cartella artefatti .
Creare la specifica di modello
Le specifiche dei modelli vengono archiviate nei gruppi di risorse. Creare un gruppo di risorse e quindi creare una specifica di modello con lo script seguente. Il nome della specifica di modello è 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"
Al termine, è possibile visualizzare la specifica del modello dal portale di Azure o usando il cmdlet seguente:
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Distribuire la specifica di modello
È ora possibile distribuire la specifica del modello. Distribuire la specifica del modello è simile a distribuire il modello che contiene, ad eccezione del fatto che si deve passare l'ID risorsa della specifica del modello. Si usano gli stessi comandi di distribuzione e, se necessario, si passano i valori dei parametri per la specifica del modello.
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
Passaggi successivi
Per informazioni sulla distribuzione di una specifica di modello come modello collegato, vedere Esercitazione: Distribuire una specifica di modello come modello collegato.