Condividi tramite


Creare un file di parametri di Resource Manager

Anziché passare parametri come valori inline nello script, è possibile usare un file JSON che contiene i valori dei parametri. Questo articolo illustra come creare un file di parametri usato con un modello JSON.

Suggerimento

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

File di parametri

Un file di parametri usa 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. Quindi, nel file dei parametri, includere un riferimento al Key Vault. Durante la distribuzione, il valore sensibile viene recuperato in modo sicuro. Per altre informazioni, vedere Usare Azure Key Vault per passare il valore del parametro sicuro durante la distribuzione.

Il file di parametri seguente include un valore di testo normale e un valore sensibile archiviato in un vault 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 ulteriori informazioni sull'uso dei valori dal Key Vault, vedere Usare Azure Key Vault per passare il valore del parametro sicuro durante la distribuzione.

Definire i valori dei parametri

Per determinare come definire i nomi e i valori dei parametri, aprire il modello JSON ed esaminare la parameters sezione . 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 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 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, è possibile 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"
    }
  }
}

Annotazioni

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, viene visualizzato 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 si passa un file di parametri locale usando @ e il nome del file dei 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 si passa un file di parametri locale usando il TemplateParameterFile parametro .

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

Per ulteriori informazioni, vedere Come distribuire risorse con i modelli di ARM e Azure PowerShell.

Annotazioni

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

Suggerimento

Se si usa il progetto gruppo di risorse di Azure in Visual Studio, assicurarsi che il file dei parametri abbia l'azione di compilazione impostata su Contenuto.

Nome del file

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 è denominato azuredeploy.parameters.json. Questa convenzione di denominazione consente di visualizzare la connessione tra il modello e i parametri.

Per eseguire la distribuzione in ambienti diversi, creare più file di parametri. Quando si denominano i file di parametri, identificarne l'uso, ad esempio sviluppo e produzione. Ad esempio, usare azuredeploy.parameters-dev.json e azuredeploy.parameters-prod.json per distribuire le risorse.

Precedenza dei parametri

È possibile usare 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 di parametri locale che inline, il valore inline ha la precedenza.

È possibile usare un file di parametri esterno fornendo l'URI al file. Quando si usa un file di parametri esterno, non è possibile passare altri valori inline o da un file locale. Tutti i parametri inline vengono ignorati. Specificare tutti i valori dei parametri nel file esterno.

Conflitti nei nomi di parametro

Se il modello include un parametro con lo stesso nome di uno dei parametri nel comando di PowerShell, PowerShell presenta il parametro del modello con il prefisso FromTemplate. Ad esempio, un parametro denominato ResourceGroupName nel modello è in conflitto con il ResourceGroupName parametro nel cmdlet New-AzResourceGroupDeployment . 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