Condividi tramite


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

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

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

  3. 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')]"
        }
      }
    }
    
  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"

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.