Creare il file di parametri di Resource Manager

Invece di passare i parametri come valori inline nello script, puoi usare un file JSON che contenga i valori dei parametri. Questo articolo spiega come creare un file di parametri usato con un modello JSON.

Suggerimento

È consigliabile Bicep perché offre le stesse funzionalità dei modelli di ARM e la sintassi è più semplice da usare. Per altre informazioni, vedere File di parametri.

File di parametri

Il file di parametri ha il formato seguente:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "value": "<second-value>"
    }
  }
}

Vale la pena notare che il file di parametri salva i valori dei parametri come testo normale. Per motivi di sicurezza, questo approccio non è consigliato per valori sensibili, ad esempio password. Se devi passare un parametro con un valore sensibile, mantieni il valore in un insieme di credenziali delle chiavi. Nel file dei parametri includi quindi un riferimento nell'insieme di credenziali delle chiavi. Il valore sensibile verrà recuperato in modo sicuro durante la distribuzione. Per altre informazioni, vedere Usare Azure Key Vault per passare valori di parametro protetti durante la distribuzione.

Il file di parametri seguente include un valore in testo normale e uno sensibile archiviato in un insieme di credenziali delle chiavi.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "<first-parameter-name>": {
      "value": "<first-value>"
    },
    "<second-parameter-name>": {
      "reference": {
        "keyVault": {
          "id": "<resource-id-key-vault>"
        },
        "secretName": "<secret-name>"
      }
    }
  }
}

Per altre informazioni sull'uso dei valori contenuti in un insieme di credenziali delle chiavi, vedere Usare Azure Key Vault per passare valori di parametro protetti durante la distribuzione.

Definire i valori dei parametri

Per determinare come definire i nomi e i valori dei parametri, apri il modello JSON e rileggi la sezione parameters. L'esempio seguente mostra i parametri del modello JSON.

"parameters": {
  "storagePrefix": {
    "type": "string",
    "maxLength": 11
  },
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS",
    "Standard_ZRS",
    "Premium_LRS"
    ]
  }
}

Nel file di parametri, il primo dettaglio da notare è il nome di ogni parametro. I nomi dei parametri nel file di parametri devono corrispondere ai nomi dei parametri nel tuo modello.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
    },
    "storageAccountType": {
    }
  }
}

Si noti il tipo di parametro. I tipi di parametro nel file di parametri devono usare gli stessi tipi del tuo modello. In questo esempio, entrambi i tipi di parametro sono stringhe.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": ""
    },
    "storageAccountType": {
      "value": ""
    }
  }
}

Controllare il modello per i parametri con un valore predefinito. Se un parametro ha un valore predefinito, puoi specificare un valore nel file di parametri, ma non è obbligatorio. Il valore del file di parametri sostituisce il valore predefinito del modello.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "" // This value must be provided.
    },
    "storageAccountType": {
      "value": "" // This value is optional. Template will use default value if not provided.
    }
  }
}

Controllare i valori consentiti del modello ed eventuali restrizioni, ad esempio la lunghezza massima. Questi valori specificano l'intervallo di valori che è possibile specificare per un parametro. In questo esempio, storagePrefix può avere un massimo di 11 caratteri e storageAccountType deve specificare un valore consentito.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "storage"
    },
    "storageAccountType": {
      "value": "Standard_ZRS"
    }
  }
}

Nota

Il file di parametri può contenere solo valori per i parametri definiti nel modello. Se il file di parametri contiene parametri aggiuntivi che non corrispondono ai parametri del modello, visualizzerai un errore.

Formati dei tipi di parametro

Nell'esempio seguente vengono illustrati i formati di tipi di parametro diversi: stringa, integer, booleano, matrice e oggetto.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "exampleString": {
      "value": "test string"
    },
    "exampleInt": {
      "value": 4
    },
    "exampleBool": {
      "value": true
    },
    "exampleArray": {
      "value": [
        "value 1",
        "value 2"
      ]
    },
    "exampleObject": {
      "value": {
        "property1": "value1",
        "property2": "value2"
      }
    }
  }
}

Distribuire un modello con il file di parametri

Dall'interfaccia della riga di comando di Azure, passa un file di parametri locale usando @ e il nome del file di parametri. Ad esempio, @storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Per ulteriori informazioni, vedi Distribuire le risorse con i modelli di ARM e l’interfaccia della riga di comando di Azure.

Da Azure PowerShell, passa un file di parametri locale usando il parametro TemplateParameterFile.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.json `
  -TemplateParameterFile C:\MyTemplates\storage.parameters.json

Per ulteriori informazioni, vedi Distribuire le risorse con i modelli di ARM e Azure PowerShell.

Nota

Non è possibile usare un file di parametri con il blade del modello personalizzato nel portale.

Suggerimento

Se stai usando il progetto gruppo di risorse di Azure in Visual Studio, assicurati che il Build Action (Azione di compilazione) del file di parametri sia impostato su Content(Contenuto).

File name

La convenzione di denominazione generale per il file di parametri consiste nell'includere i parametri nel nome del modello. Ad esempio, se il modello è denominato azuredeploy.json, il file di parametri sarà denominato azuredeploy.parameters.json. Questa convenzione di denominazione consente di vedere la connessione tra il modello e i parametri.

Per la distribuzione in ambienti diversi, puoi creare più di un file di parametri. Quando assegni un nome ai file di parametri, identificane l'uso, come sviluppo e produzione. Ad esempio, usa azuredeploy.parameters-dev.json e azuredeploy.parameters-prod.json per distribuire le risorse.

Precedenza dei parametri

È possibile usare i parametri inline e un file di parametri locale nella stessa operazione di distribuzione. Ad esempio, è possibile specificare alcuni valori nel file di parametri locale e aggiungere altri valori inline durante la distribuzione. Se si specificano valori per un parametro sia nel file dei parametri locale che inline, il valore inline ha la precedenza.

È possibile usare un file di parametri esterno specificando l'URI per il file. Tuttavia, quando usi un file di parametri esterni, non è possibile trasmettere altri valori, né inline né da un file locale. Tutti i parametri inline vengono ignorati. È necessario fornire tutti i valori dei parametri presenti nel file esterno.

Conflitti nei nomi di parametro

Se il tuo modello include un parametro con lo stesso nome di uno dei parametri nel comando di PowerShell, PowerShell aggiunge al parametro del modello il suffisso FromTemplate. Ad esempio, un parametro denominato ResourceGroupName nel tuo modello è in conflitto con il parametro ResourceGroupName nel cmdlet New-AzResourceGroupDeployment. Ti viene richiesto di specificare un valore per ResourceGroupNameFromTemplate. È possibile evitare questa confusione usando nomi di parametro non utilizzati per i comandi di distribuzione.

Passaggi successivi