Condividi tramite


Esercitazione: Aggiungere parametri a un modello di Azure Resource Manager

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 (modello di ARM) aggiungendo parametri. Il completamento di questa istruzione richiede 14 minuti .

Prerequisiti

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

È necessario avere installato Visual Studio Code e usare l'estensione Azure Resource Manager Tools e Azure PowerShell o l'interfaccia della riga di comando di Azure Command-Line. Per altre informazioni, vedere gli strumenti per i modelli.

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": "2021-09-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 è hardcoded. Questo modello può quindi essere usato solo per distribuire ogni volta lo stesso account di archiviazione. 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, si aggiungerà un parametro che è possibile usare per passare un nome dell'account di archiviazione. Il file JSON evidenziato nell'esempio seguente mostra le modifiche apportate al modello. Il parametro storageName viene identificato come stringa. Il nome dell'account di archiviazione è composto da lettere minuscole o numeri e ha un limite di 24 caratteri.

Copiare l'intero file e sostituire il modello con il contenuto del file.

{
  "$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": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Distribuire il modello

A questo punto è possibile distribuire il modello. L'esempio seguente illustra come distribuire il modello con l'interfaccia della riga di comando di Azure o con PowerShell. Si noti che il nome dell'account di archiviazione viene specificato come uno dei valori nel comando di distribuzione. Per il nome dell'account di archiviazione specificare lo stesso nome usato nell'esercitazione precedente.

Se non è stato ancora creato il gruppo di risorse, vedere Creare il 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 in che modo la ridistribuzione influisce 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 viene modificata una proprietà, viene aggiornata. Se la risorsa non esiste, viene creata.

Questa modalità di gestione degli aggiornamenti indica 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 ad esempio si aggiungono file all'account di archiviazione, è possibile ridistribuire l'account di archiviazione senza perdere i file.

Personalizzare in base all'ambiente

I parametri consentono di personalizzare la distribuzione specificando valori personalizzati per un determinato ambiente. È possibile passare valori diversi, ad esempio, in base alla distribuzione in un ambiente di sviluppo, test o produzione.

Il modello precedente distribuisce sempre un account di archiviazione con ridondanza locale standard Standard_LRS . È possibile scegliere la flessibilità necessaria per distribuire unità di mantenimento delle scorte (SKU) diverse a seconda dell'ambiente. Nell'esempio seguente sono illustrate le modifiche da apportare per aggiungere un parametro per lo SKU. Copiare l'intero file e incollarlo sul 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": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Al parametro storageSKU è assegnato un valore predefinito. Usare questo valore quando la distribuzione non la specifica. Include anche un elenco di valori consentiti. Questi valori corrispondono a quelli 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}"

Nota

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 visualizzare la flessibilità del modello, distribuirla di nuovo. Questa volta impostare il parametro SKU su archiviazione con ridondanza geografica standard (GRS) 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 sono ugualmente valide.

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 modello ritiene di base sia uno degli SKU.

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

Il comando ha esito negativo contemporaneamente con un messaggio di errore che fornisce i valori consentiti. Il processore ARM rileva l'errore prima dell'avvio della distribuzione.

Pulire le risorse

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

Se si arresta ora, è possibile pulire le risorse distribuite eliminando il gruppo di risorse.

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

Passaggi successivi

È stato migliorato il modello creato nella prima esercitazione aggiungendo parametri. Nell'esercitazione successiva vengono fornite informazioni sulle funzioni del modello.