Esercitazione: Creare una specifica di modello con modelli collegati
Informazioni su come creare una specifica di modello con un modello principale e un modello collegato. Le specifiche dei modelli vengono usate per condividere modelli di ARM con altri utenti dell'organizzazione. Questo articolo mostra come creare una specifica di modello per creare un pacchetto di un modello principale e i relativi modelli collegati usando la proprietà relativePath
della risorsa di distribuzione.
Prerequisiti
Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Nota
Per usare le specifiche di modello con Azure PowerShell, è necessario installare versione 5.0.0 o successiva. Per usarla 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 stabilire un collegamento a un altro modello, aggiungere una risorsa distribuzioni al modello principale. Nella proprietà templateLink
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 il relativePath è possibile usare uno dei valori seguenti:
./artifacts/linkedTemplate.json
/artifacts/linkedTemplate.json
artifacts/linkedTemplate.json
La proprietà relativePath
è sempre relativa al file modello in cui relativePath
viene dichiarata, quindi se è presente un altro linkedTemplate2.json che viene chiamato da linkedTemplate.json e linkedTemplate2.json è archiviato nella stessa sottocartella degli artefatti, il relativePath specificato in linkedTemplate.json è solo linkedTemplate2.json
.
Creare il modello principale con il seguente codice JSON. Salvare il modello principale come azuredeploy.json nel computer locale. Questa esercitazione ipotizza che sia stato salvato nel percorso c:\Templates\azuredeploy.json, ma è possibile usare un percorso qualsiasi.
{ "$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')]" } } } } ] }
Nota
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 seguente codice 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')]" } } }
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"
Una volta terminato, è 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 di modello. La distribuzione della specifica di modello è analoga alla distribuzione del modello che contiene, con la differenza che occorre passare l'ID risorsa della specifica di modello. Usare gli stessi comandi di distribuzione e, se necessario, passare i valori dei parametri della specifica di 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 ulteriori informazioni sulla distribuzione di una specifica di modello come modello collegato, vedi Esercitazione: Distribuire una specifica di modello come modello collegato.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per