Partage via


Créer un fichier de paramètres Resource Manager

Au lieu de passer des paramètres en tant que valeurs inline dans votre script, vous pouvez utiliser un fichier JSON qui contient les valeurs de paramètre. Cet article montre comment créer un fichier de paramètres que vous utilisez avec un modèle JSON.

Conseil / Astuce

Nous recommandons Bicep, parce qu’il offre les mêmes fonctionnalités que les modèles ARM et que la syntaxe est plus facile d’utilisation. Pour en savoir plus, consultez les fichiers de paramètres.

Fichier de paramètres

Un fichier de paramètres utilise le format suivant :

{
  "$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>"
    }
  }
}

Il est important de noter que le fichier de paramètres enregistre les valeurs des paramètres sous forme de texte brut. Pour des raisons de sécurité, cette approche n’est pas recommandée pour les valeurs sensibles telles que les mots de passe. Si vous devez passer un paramètre avec une valeur sensible, conservez la valeur dans un coffre de clés. Ensuite, dans votre fichier de paramètres, incluez une référence au Key Vault Microsoft Azure. Pendant le déploiement, la valeur sensible est récupérée en toute sécurité. Pour plus d’informations, consultez Utiliser Azure Key Vault pour passer une valeur de paramètre sécurisée pendant le déploiement.

Le fichier de paramètres suivant inclut une valeur de texte brut et une valeur sensible stockée dans un coffre de clés.

{
  "$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>"
      }
    }
  }
}

Pour plus d’informations sur l’utilisation de valeurs à partir d’un coffre de clés, consultez Utiliser Azure Key Vault pour transmettre la valeur de paramètre sécurisée pendant le déploiement.

Définissez des valeurs de paramètre

Pour déterminer comment définir les noms et valeurs des paramètres, ouvrez votre modèle JSON et passez en revue la parameters section. L’exemple suivant montre les paramètres du modèle JSON.

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

Dans le fichier de paramètres, le premier détail à noter est le nom de chaque paramètre. Les noms de paramètres dans votre fichier de paramètres doivent correspondre aux noms de paramètres dans votre modèle.

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

Notez le type de paramètre. Les types de paramètres dans votre fichier de paramètres doivent utiliser les mêmes types que votre modèle. Dans cet exemple, les deux types de paramètres sont des chaînes.

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

Vérifiez le modèle pour les paramètres avec une valeur par défaut. Si un paramètre a une valeur par défaut, vous pouvez fournir une valeur dans le fichier de paramètres, mais ce n’est pas obligatoire. La valeur du fichier de paramètres remplace la valeur par défaut du modèle.

{
  "$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.
    }
  }
}

Vérifiez les valeurs autorisées du modèle et toutes les restrictions telles que la longueur maximale. Ces valeurs spécifient la plage de valeurs que vous pouvez fournir pour un paramètre. Dans cet exemple, storagePrefix peut avoir un maximum de 11 caractères et storageAccountType doit spécifier une valeur autorisée.

{
  "$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"
    }
  }
}

Remarque

Votre fichier de paramètres ne peut contenir que des valeurs pour les paramètres définis dans le modèle. Si votre fichier de paramètres contient des paramètres supplémentaires qui ne correspondent pas aux paramètres du modèle, vous recevez une erreur.

Formats de types de paramètres

L’exemple suivant illustre les formats de différents types de paramètres : chaîne, entier, booléen, tableau et objet.

{
  "$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"
      }
    }
  }
}

Déployer un modèle avec un fichier de paramètres

À partir d’Azure CLI, vous passez un fichier de paramètres local à l’aide @ et le nom du fichier de paramètres. Par exemple : @storage.parameters.json.

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

Pour plus d’informations, consultez Déployer des ressources à l’aide de modèles ARM et d’Azure CLI.

À partir d’Azure PowerShell, vous transmettez un fichier de paramètres local à l’aide du TemplateParameterFile paramètre.

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

Pour plus d’informations, consultez Déployer des ressources avec des modèles ARM et Azure PowerShell.

Remarque

Il n’est pas possible d’utiliser un fichier de paramètres avec le panneau de modèle personnalisé dans le portail.

Conseil / Astuce

Si vous utilisez le projet Groupe de ressources Azure dans Visual Studio, vérifiez que le fichier de paramètres a son action de génération définie sur Contenu.

Nom de fichier

La convention d’affectation de noms générale pour le fichier de paramètres consiste à inclure des paramètres dans le nom du modèle. Par exemple, si votre modèle est nommé azuredeploy.json, votre fichier de paramètres est nommé azuredeploy.parameters.json. Cette convention d’affectation de noms vous permet de voir la connexion entre le modèle et les paramètres.

Pour effectuer un déploiement dans différents environnements, vous créez plusieurs fichiers de paramètres. Lorsque vous nommez les fichiers de paramètres, identifiez leur utilisation, comme le développement et la production. Par exemple, utilisez azuredeploy.parameters-dev.json et azuredeploy.parameters-prod.json pour déployer des ressources.

Priorité des paramètres

Vous pouvez utiliser des paramètres inline et un fichier de paramètres local dans la même opération de déploiement. Par exemple, vous pouvez spécifier certaines valeurs dans le fichier de paramètres local et ajouter d’autres valeurs inline pendant le déploiement. Si vous fournissez des valeurs pour un paramètre dans le fichier de paramètres local et inline, la valeur inline est prioritaire.

Il est possible d’utiliser un fichier de paramètres externe en fournissant l’URI au fichier. Lorsque vous utilisez un fichier de paramètres externe, vous ne pouvez pas transmettre d’autres valeurs inline ou à partir d’un fichier local. Tous les paramètres inline sont ignorés. Fournissez toutes les valeurs de paramètre dans le fichier externe.

Conflits de noms de paramètre

Si votre modèle inclut un paramètre portant le même nom que l’un des paramètres de la commande PowerShell, PowerShell présente le paramètre de votre modèle avec le postfix FromTemplate. Par exemple, un paramètre nommé ResourceGroupName dans votre modèle est en conflit avec le ResourceGroupName paramètre dans l’applet de commande New-AzResourceGroupDeployment . Vous êtes invité à fournir une valeur pour ResourceGroupNameFromTemplate. Pour éviter cette confusion, utilisez des noms de paramètres qui ne sont pas utilisés pour les commandes de déploiement.

Étapes suivantes