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.

  1. 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.

  2. Creare una directory denominata artefatti nella cartella in cui viene salvato il modello principale.

  3. 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')]"
        }
      }
    }
    
  4. 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, vedere Esercitazione: Distribuire una specifica di modello come modello collegato.