Condividi tramite


Esercitazione: Aggiungi parametri al modello ARM

Nell'esercitazione precedente si è appreso come aggiungere un account di archiviazione di Azure al modello e distribuirlo. Questa esercitazione illustra come migliorare il modello di Azure Resource Manager aggiungendo parametri. Il completamento di questa istruzione richiede 14 minuti .

Prerequisiti

È consigliabile completare l'esercitazione sulle risorse, ma non è obbligatorio.

È necessario avere Visual Studio Code e Azure PowerShell o l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere Strumenti modello.

Rivedere il modello

Alla fine dell'esercitazione precedente, il modello ha il file JSON seguente:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

È possibile notare che si è verificato un problema con questo modello. Il nome dell'account di archiviazione è codificato. È possibile usare questo modello solo per distribuire lo stesso account di archiviazione ogni volta. Per distribuire un account di archiviazione con un nome diverso, è necessario creare un nuovo modello, che ovviamente non è un modo pratico per automatizzare le distribuzioni.

Rendere riutilizzabile il modello

Per rendere riutilizzabile il modello, aggiungere un parametro che è possibile usare per passare un nome di account di archiviazione. Il file JSON nell'esempio seguente mostra le modifiche apportate al modello. Il storageName parametro viene identificato come stringa. Il nome dell'account di archiviazione è costituito da lettere minuscole o numeri e ha un limite di 24 caratteri.

Copiare l'intero file e sostituire il modello con il relativo contenuto:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Distribuire un modello

Distribuire il modello. L'esempio seguente distribuisce il modello con l'interfaccia della riga di comando di Azure o Azure PowerShell. Si noti che si specifica il nome dell'account di archiviazione come uno dei valori nel comando di distribuzione. Per il nome dell'account di archiviazione, specificare lo stesso nome usato nell'esercitazione precedente.

Se il gruppo di risorse non è stato creato, vedere Creare un gruppo di risorse. Nell'esempio si presuppone che la templateFile variabile sia impostata sul percorso del file modello, come illustrato nella prima esercitazione.

New-AzResourceGroupDeployment `
  -Name addnameparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Informazioni sugli aggiornamenti delle risorse

Dopo aver distribuito un account di archiviazione con lo stesso nome usato in precedenza, è possibile chiedersi come la ridistribuzione influisca sulla risorsa.

Se la risorsa esiste già e non sono state apportate modifiche alle proprietà, non è necessario eseguire altre azioni. Se la risorsa esiste e una proprietà viene modificata, viene aggiornata. Se la risorsa non esiste, viene creata.

Questo modo di gestire gli aggiornamenti significa che il modello può includere tutte le risorse necessarie per una soluzione di Azure. È possibile ridistribuire il modello in modo sicuro e sapere che le risorse cambiano o vengono create solo quando necessario. Se si aggiungono file all'account di archiviazione, ad esempio, è possibile ridistribuire l'account di archiviazione senza perdere i file.

Personalizzare in base all'ambiente

I parametri consentono di personalizzare la distribuzione fornendo valori personalizzati per un determinato ambiente. È possibile passare valori diversi, ad esempio, in base al fatto che ci si sta implementando in un ambiente di sviluppo, di test o di produzione.

Il modello precedente distribuisce sempre un account di archiviazione con ridondanza locale (LRS) standard Standard_LRS . Potresti volere la flessibilità di distribuire diverse unità di gestione delle scorte (SKU) a seconda dell'ambiente. Nell'esempio seguente vengono illustrate le modifiche per aggiungere un parametro per lo SKU. Copiare l'intero file e incollarlo nel modello:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Il storageSKU parametro ha un valore predefinito. Usare questo valore quando la distribuzione non la specifica. Include anche un elenco di valori consentiti. Questi valori corrispondono ai valori necessari per creare un account di archiviazione. Si vuole che gli utenti del modello passino gli SKU che funzionano.

Ridistribuire il modello

È ora possibile distribuire di nuovo l'app. Poiché lo SKU predefinito è impostato su Standard_LRS, è già stato specificato un valore di parametro.

New-AzResourceGroupDeployment `
  -Name addskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Annotazioni

Se la distribuzione non riesce, usare l'opzione verbose per ottenere informazioni sulle risorse create. Usare l'opzione debug per ottenere altre informazioni per il debug.

Per vedere la flessibilità del tuo modello, distribuiamolo di nuovo. Questa volta impostare il parametro SKU su archiviazione con ridondanza geografica standard Standard_GRS. È possibile passare un nuovo nome per creare un account di archiviazione diverso o usare lo stesso nome per aggiornare l'account di archiviazione esistente. Entrambe le opzioni funzionano.

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

Infine, si eseguirà un altro test e si vedrà cosa accade quando si passa uno SKU che non è uno dei valori consentiti. In questo caso, viene testato lo scenario in cui l'utente del modello ritiene base essere uno degli SKU.

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

Il comando fallisce immediatamente con un messaggio di errore che fornisce i valori consentiti. Il processore ARM trova l'errore prima dell'avvio della distribuzione.

Pulire le risorse

Se si passa all'esercitazione successiva, non è necessario eliminare il gruppo di risorse.

Se interrompi ora, è possibile ripulire le risorse distribuite eliminando il gruppo di risorse.

  1. Nel portale di Azure selezionare Gruppo di risorse dal menu a sinistra.
  2. Digitare il nome del gruppo di risorse nel campo Filtro per qualsiasi campo ... di testo.
  3. Selezionare la casella accanto a myResourceGroup e selezionare myResourceGroup o il nome del gruppo di risorse.
  4. Selezionare Elimina gruppo di risorse dal menu in alto.

Passaggi successivi

È stato migliorato il modello creato nella prima esercitazione aggiungendo parametri. Nel prossimo tutorial imparerai le funzioni template.