Avvio rapido: Creare e distribuire una specifica di modello

Questo argomento di avvio rapido illustra come creare un pacchetto di un modello di Azure Resource Manager in una specifica di modello e quindi distribuire tale specifica. La specifica di modello contiene un modello di Resource Manager che distribuisce un account di archiviazione.

Suggerimento

È consigliabile Bicep perché offre le stesse funzionalità dei modelli ARM e la sintassi è più semplice da usare. Per ulteriori informazioni, vedere Avvio rapido: Creare e distribuire una specifica di modello con Bicep.

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 il modello

Per creare una specifica di modello si userà un modello locale. Copiare il modello seguente e salvarlo in locale in un file denominato azuredeploy.json. In questo argomento di avvio rapido si presuppone di aver salvato il modello 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",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.13.1.58284",
      "templateHash": "13120038605368246703"
    }
  },
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The storage account location."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the storage account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

Creare la specifica di modello

La specifica di modello è un tipo di risorsa denominato Microsoft.Resources/templateSpecs. Per creare una specifica di modello è possibile usare PowerShell, l'interfaccia della riga di comando di Azure, il portale o un modello di Resource Manager.

  1. Creare un nuovo gruppo di risorse per contenere la specifica di modello.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Creare la specifica di modello in quel gruppo di risorse. Assegnare alla nuova specifica di modello il nome storageSpec.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    

Distribuire la specifica di modello

Per distribuire una specifica di modello, usare gli stessi comandi di distribuzione usati per distribuire un modello. Passare l'ID risorsa della specifica di modello da distribuire.

  1. Creare un gruppo di risorse per contenere il nuovo account di archiviazione.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Ottenere l'ID risorsa della specifica di modello.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Distribuire la specifica di modello.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Specificare i parametri usando la stessa procedura adottata per un modello di Azure Resource Manager. Ridistribuire la specifica di modello con un parametro per il tipo di account di archiviazione.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

Concedi accesso

Se si vuole consentire ad altri utenti dell'organizzazione di distribuire la specifica di modello, è necessario concedere loro l'accesso in lettura. È possibile assegnare il ruolo Lettore a un gruppo Microsoft Entra per il gruppo di risorse che contiene le specifiche di modello da condividere. Per ulteriori informazioni, vedere Esercitazione: Concedere l'accesso alle risorse di Azure a un gruppo usando Azure PowerShell.

Aggiornare il modello

Si supponga di aver identificato una modifica da apportare al modello nella specifica di modello. Il modello seguente è analogo al modello precedente, con la differenza che aggiunge un prefisso al nome dell'account di archiviazione. Copiare il modello seguente e aggiornare il file azuredeploy.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."
      }
    },
    "namePrefix": {
      "type": "string",
      "maxLength": 11,
      "defaultValue": "store",
      "metadata": {
        "description": "Prefix for storage account name"
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Aggiornare la versione della specifica di modello

Invece di creare una nuova specifica di modello per il modello modificato, aggiungere una nuova versione denominata 2.0 alla specifica di modello esistente. Gli utenti possono scegliere quale delle due versioni distribuire.

  1. Creare una nuova versione per la specifica di modello.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. Per distribuire la nuova versione, ottenere l'ID della risorsa per la versione 2.0.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Distribuire tale versione. Fornire un prefisso per il nome account di archiviazione.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -namePrefix "demoaccount"
    

Pulire le risorse

Per pulire le risorse distribuite in questo argomento di avvio rapido, eliminare entrambi i gruppi di risorse creati.

  1. Nel portale di Azure selezionare Gruppo di risorse nel menu a sinistra.

  2. Immettere il nome del gruppo di risorse (templateSpecRG e storageRG) nel campo Filtra per nome.

  3. Selezionare il nome del gruppo di risorse.

  4. Selezionare Elimina gruppo di risorse nel menu in alto.

Passaggi successivi

Per informazioni su come creare una specifica di modello che include modelli collegati, vedere Creare una specifica di modello di un modello collegato.