Comprendre la structure et la syntaxe des modèles Azure Resource ManagerUnderstand the structure and syntax of Azure Resource Manager templates

Cet article décrit la structure d’un modèle Azure Resource Manager.This article describes the structure of an Azure Resource Manager template. Elle présente les différentes sections d’un modèle et les propriétés disponibles dans ces sections.It presents the different sections of a template and the properties that are available in those sections.

Cet article est destiné aux utilisateurs qui possèdent des connaissances sur les modèles Resource Manager.This article is intended for users who have some familiarity with Resource Manager templates. Il fournit des informations détaillées sur la structure du modèle.It provides detailed information about the structure of the template. Pour obtenir un didacticiel pas à pas vous guidant tout au long du processus de création d’un modèle, consultez :Tutoriel : Créer et déployer votre premier modèle Azure Resource ManagerFor a step-by-step tutorial that guides you through the process of creating a template, see Tutorial: Create and deploy your first Azure Resource Manager template.

Format de modèleTemplate format

Dans sa structure la plus simple, un modèle a les éléments suivants :In its simplest structure, a template has the following elements:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
Nom de l'élémentElement name ObligatoireRequired DescriptionDescription
$schema$schema OuiYes Emplacement du fichier de schéma JSON qui décrit la version du langage du modèle.Location of the JSON schema file that describes the version of the template language.

Pour des déploiements de groupes de ressources, utilisez : https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#For resource group deployments, use: https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Pour des déploiements d’abonnements, utilisez : https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#For subscription deployments, use: https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#
contentVersioncontentVersion OuiYes Version du modèle (par exemple, 1.0.0.0).Version of the template (such as 1.0.0.0). Vous pouvez fournir n’importe quelle valeur pour cet élément.You can provide any value for this element. Utilisez cette valeur pour documenter les modifications importantes dans votre modèle.Use this value to document significant changes in your template. Quand vous déployez des ressources à l'aide du modèle, cette valeur permet de vous assurer que le bon modèle est utilisé.When deploying resources using the template, this value can be used to make sure that the right template is being used.
apiProfileapiProfile NonNo Une version d’API qui sert de collection de versions d’API pour les types de ressources.An API version that serves as a collection of API versions for resource types. Utilisez cette valeur pour éviter d’avoir à spécifier les versions d’API pour chaque ressource dans le modèle.Use this value to avoid having to specify API versions for each resource in the template. Lorsque vous spécifiez une version de profil d’API et que vous ne spécifiez pas une version d’API pour le type de ressource, Resource Manager utilise la version d’API pour ce type de ressource qui est définie dans le profil.When you specify an API profile version and don't specify an API version for the resource type, Resource Manager uses the API version for that resource type that is defined in the profile.

La propriété de profil d’API est particulièrement utile lorsque vous déployez un modèle dans différents environnements, comme Azure Stack et Azure global.The API profile property is especially helpful when deploying a template to different environments, such as Azure Stack and global Azure. Utilisez la version de profil d’API pour vous assurer que votre modèle utilise automatiquement des versions prises en charge dans les deux environnements.Use the API profile version to make sure your template automatically uses versions that are supported in both environments. Pour une liste des versions de profil d’API actuelles et les versions d’API définies dans le profil de ressources, consultez Profil d’API.For a list of the current API profile versions and the resources API versions defined in the profile, see API Profile.

Pour plus d’informations, consultez Suivre les versions à l’aide de profils d’API.For more information, see Track versions using API profiles.
parametersparameters NonNo Valeurs fournies lors de l'exécution du déploiement pour personnaliser le déploiement des ressources.Values that are provided when deployment is executed to customize resource deployment.
variablesvariables NonNo Valeurs utilisées en tant que fragments JSON dans le modèle pour simplifier les expressions du langage du modèle.Values that are used as JSON fragments in the template to simplify template language expressions.
functionsfunctions NonNo Fonctions définies par l’utilisateur et disponibles dans le modèle.User-defined functions that are available within the template.
resourcesresources OuiYes Types de ressource déployés ou mis à jour dans un groupe de ressources ou un abonnement.Resource types that are deployed or updated in a resource group or subscription.
outputsoutputs NonNo Valeurs retournées après le déploiement.Values that are returned after deployment.

Chaque élément a des propriétés que vous pouvez définir.Each element has properties you can set. Cet article décrit les sections du modèle de manière plus approfondie.This article describes the sections of the template in greater detail.

ParamètresParameters

C’est dans la section des paramètres du modèle que vous pouvez spécifier les valeurs que vous pouvez saisir lors du déploiement des ressources.In the parameters section of the template, you specify which values you can input when deploying the resources. Vous êtes limité à 256 paramètres dans un modèle.You're limited to 256 parameters in a template. Vous pouvez réduire le nombre de paramètres en utilisant des objets contenant plusieurs propriétés.You can reduce the number of parameters by using objects that contain multiple properties.

Les propriétés disponibles pour un paramètre sont :The available properties for a parameter are:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array-parameters>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
Nom de l'élémentElement name ObligatoireRequired DescriptionDescription
parameter-nameparameter-name OuiYes Nom du paramètre.Name of the parameter. Doit être un identificateur JavaScript valide.Must be a valid JavaScript identifier.
typetype OuiYes Type de la valeur du paramètre.Type of the parameter value. Les types et valeurs autorisés sont : string, secureString, int, bool, object, secureObject et array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array. Consultez Types de données.See Data types.
defaultValuedefaultValue NonNo Valeur par défaut du paramètre, si aucune valeur n'est fournie pour le paramètre.Default value for the parameter, if no value is provided for the parameter.
allowedValuesallowedValues NonNo Tableau des valeurs autorisées pour le paramètre afin de vous assurer que la bonne valeur a bien été fournie.Array of allowed values for the parameter to make sure that the right value is provided.
minValueminValue NonNo Valeur minimale pour les paramètres de type int, cette valeur est inclusive.The minimum value for int type parameters, this value is inclusive.
maxValuemaxValue NonNo Valeur maximale pour les paramètres de type int. Cette valeur est inclusive.The maximum value for int type parameters, this value is inclusive.
minLengthminLength NonNo Valeur minimale pour les paramètres de type string, secure string et array. Cette valeur est inclusive.The minimum length for string, secure string, and array type parameters, this value is inclusive.
maxLengthmaxLength NonNo Valeur maximale pour les paramètres de type string, secure string et array. Cette valeur est inclusive.The maximum length for string, secure string, and array type parameters, this value is inclusive.
descriptiondescription NonNo Description du paramètre qui apparaît aux utilisateurs dans le portail.Description of the parameter that is displayed to users through the portal. Pour plus d’informations, consultez Commentaires dans les modèles.For more information, see Comments in templates.

Pour obtenir des exemples d’utilisation des paramètres, consultez Paramètres dans les modèles Azure Resource Manager.For examples of how to use parameters, see Parameters in Azure Resource Manager templates.

Types de donnéesData types

Pour les entiers passés comme paramètres inclus, la plage de valeurs peut être limitée par le SDK ou l’outil en ligne de commande que vous utilisez pour le déploiement.For integers passed as inline parameters, the range of values may be limited by the SDK or command-line tool you use for deployment. Par exemple, si vous utilisez PowerShell pour déployer un modèle, les types d’entiers peuvent être compris entre -2147483648 et 2147483647.For example, when using PowerShell to deploy a template, integer types can range from -2147483648 to 2147483647. Pour éviter cette limite, spécifiez des valeurs entières élevées dans un fichier de paramètres.To avoid this limitation, specify large integer values in a parameter file. Les types de ressources appliquent leurs propres limites aux propriétés d’entiers.Resource types apply their own limits for integer properties.

Quand vous spécifiez des valeurs booléennes et des valeurs entières dans votre modèle, ne les placez pas entre guillemets.When specifying boolean and integer values in your template, don't surround the value with quotation marks. Placez les valeurs de chaîne entre guillemets doubles.Start and end string values with double quotation marks.

Les objets commencent par une accolade ouvrante et se terminent par une accolade fermante.Objects start with a left brace and end with a right brace. Les tableaux commencent par un crochet ouvrant et se terminent par un crochet fermant.Arrays start with a left bracket and end with a right bracket.

Les chaînes et objets sécurisés ne peuvent pas être lus après le déploiement des ressources.Secure strings and secure objects can't be read after resource deployment.

Pour obtenir des exemples de mise en forme de types de données, consultez Formats de types de paramètres.For samples of formatting data types, see Parameter type formats.

VariablesVariables

Dans la section des variables, vous définissez des valeurs pouvant être utilisées dans votre modèle.In the variables section, you construct values that can be used throughout your template. Vous n’êtes pas obligé de définir des variables, mais elles simplifient souvent votre modèle en réduisant les expressions complexes.You don't need to define variables, but they often simplify your template by reducing complex expressions.

L’exemple suivant montre les options disponibles pour la définition d’une variable :The following example shows the available options for defining a variable:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Pour plus d’informations sur l’utilisation de copy pour créer plusieurs valeurs pour une variable, consultez Itération de variable.For information about using copy to create several values for a variable, see Variable iteration.

Pour obtenir des exemples d’utilisation des variables, consultez Variables dans un modèle Azure Resource Manager.For examples of how to use variables, see Variables in Azure Resource Manager template.

FonctionsFunctions

Dans votre modèle, vous pouvez créer vos propres fonctions.Within your template, you can create your own functions. Ces fonctions peuvent être utilisées dans votre modèle.These functions are available for use in your template. En règle générale, vous définissez des expressions complexes que vous ne voulez pas répéter tout au long de votre modèle.Typically, you define complicated expressions that you don't want to repeat throughout your template. Vous créez les fonctions définies par l’utilisateur à partir d’expressions et de fonctions prises en charge dans les modèles.You create the user-defined functions from expressions and functions that are supported in templates.

La définition d’une fonction utilisateur est soumise à certaines restrictions :When defining a user function, there are some restrictions:

  • La fonction ne peut pas accéder aux variables.The function can't access variables.
  • La fonction ne peut utiliser que des paramètres définis dans l’autre fonction.The function can only use parameters that are defined in the function. Lorsque vous utilisez la fonction parameters dans une fonction définie par l’utilisateur, vous êtes limité aux paramètres de cette fonction.When you use the parameters function within a user-defined function, you're restricted to the parameters for that function.
  • La fonction ne peut pas appeler d’autres fonctions définies par l’utilisateur.The function can't call other user-defined functions.
  • La fonction ne peut pas utiliser la fonction de référence.The function can't use the reference function.
  • Les paramètres de la fonction ne peuvent pas avoir de valeur par défaut.Parameters for the function can't have default values.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Nom de l'élémentElement name ObligatoireRequired DescriptionDescription
espace de nomsnamespace OuiYes Espace de noms pour les fonctions personnalisées.Namespace for the custom functions. Utilisez pour éviter les conflits de noms avec les fonctions de modèle.Use to avoid naming conflicts with template functions.
function-namefunction-name OuiYes Nom de la fonction personnalisée.Name of the custom function. Lors de l’appel de la fonction, associez le nom de la fonction à l’espace de noms.When calling the function, combine the function name with the namespace. Par exemple, pour appeler une fonction nommée uniqueName dans l’espace de noms contoso, utilisez "[contoso.uniqueName()]".For example, to call a function named uniqueName in the namespace contoso, use "[contoso.uniqueName()]".
parameter-nameparameter-name NonNo Nom du paramètre à utiliser dans la fonction personnalisée.Name of the parameter to be used within the custom function.
parameter-valueparameter-value NonNo Type de la valeur du paramètre.Type of the parameter value. Les types et valeurs autorisés sont : string, secureString, int, bool, object, secureObject et array.The allowed types and values are string, securestring, int, bool, object, secureObject, and array.
output-typeoutput-type OuiYes Type de la valeur de sortie.Type of the output value. Les valeurs de sortie prennent en charge les mêmes types que les paramètres d'entrée de la fonction.Output values support the same types as function input parameters.
output-valueoutput-value OuiYes Expression du langage du modèle évaluée et retournée à partir de la fonction.Template language expression that is evaluated and returned from the function.

Pour obtenir des exemples d’utilisation des fonctions personnalisées, consultez Fonctions définies par l’utilisateur dans un modèle Azure Resource Manager.For examples of how to use custom functions, see User-defined functions in Azure Resource Manager template.

RessourcesResources

Dans la section des ressources, vous définissez les ressources déployées ou mises à jour.In the resources section, you define the resources that are deployed or updated.

Vous définissez des ressources avec la structure suivante :You define resources with the following structure:

"resources": [
  {
      "condition": "<true-to-deploy-this-resource>",
      "type": "<resource-provider-namespace/resource-type-name>",
      "apiVersion": "<api-version-of-resource>",
      "name": "<name-of-the-resource>",
      "comments": "<your-reference-notes>",
      "location": "<location-of-resource>",
      "dependsOn": [
          "<array-of-related-resource-names>"
      ],
      "tags": {
          "<tag-name1>": "<tag-value1>",
          "<tag-name2>": "<tag-value2>"
      },
      "sku": {
          "name": "<sku-name>",
          "tier": "<sku-tier>",
          "size": "<sku-size>",
          "family": "<sku-family>",
          "capacity": <sku-capacity>
      },
      "kind": "<type-of-resource>",
      "copy": {
          "name": "<name-of-copy-loop>",
          "count": <number-of-iterations>,
          "mode": "<serial-or-parallel>",
          "batchSize": <number-to-deploy-serially>
      },
      "plan": {
          "name": "<plan-name>",
          "promotionCode": "<plan-promotion-code>",
          "publisher": "<plan-publisher>",
          "product": "<plan-product>",
          "version": "<plan-version>"
      },
      "properties": {
          "<settings-for-the-resource>",
          "copy": [
              {
                  "name": ,
                  "count": ,
                  "input": {}
              }
          ]
      },
      "resources": [
          "<array-of-child-resources>"
      ]
  }
]
Nom de l'élémentElement name ObligatoireRequired DescriptionDescription
conditioncondition NonNo Valeur booléenne qui indique si la ressource sera provisionnée pendant ce déploiement.Boolean value that indicates whether the resource will be provisioned during this deployment. Quand la valeur est true, la ressource est créée pendant le déploiement.When true, the resource is created during deployment. Quand la valeur est false, la ressource est ignorée pour ce déploiement.When false, the resource is skipped for this deployment. Voir condition.See condition.
typetype OuiYes Type de la ressource.Type of the resource. Cette valeur est une combinaison de l’espace de noms du fournisseur de ressources et du type de ressource (comme Microsoft.Storage/storageAccounts).This value is a combination of the namespace of the resource provider and the resource type (such as Microsoft.Storage/storageAccounts). Pour déterminer les valeurs disponibles, consultez référence de modèle.To determine available values, see template reference. Pour une ressource enfant, le format du type dépend de si elle est imbriquée dans la ressource parente ou définie en dehors de la ressource parente.For a child resource, the format of the type depends on whether it's nested within the parent resource or defined outside of the parent resource. Consultez Définition du nom et du type des ressources enfants.See Set name and type for child resources.
apiVersionapiVersion OuiYes La version de l'API REST à utiliser pour la création de la ressource.Version of the REST API to use for creating the resource. Pour déterminer les valeurs disponibles, consultez référence de modèle.To determine available values, see template reference.
namename OuiYes Nom de la ressource.Name of the resource. Le nom doit respecter les restrictions de composant d'URI définies dans le document RFC3986.The name must follow URI component restrictions defined in RFC3986. Les services Azure qui exposent le nom de la ressource à des parties externes valident le nom pour vérifier qu’il ne s’agit pas d’une tentative d’usurpation d’identité.Azure services that expose the resource name to outside parties validate the name to make sure it isn't an attempt to spoof another identity. Pour une ressource enfant, le format du nom dépend de si elle est imbriquée dans la ressource parente ou définie en dehors de la ressource parente.For a child resource, the format of the name depends on whether it's nested within the parent resource or defined outside of the parent resource. Consultez Définition du nom et du type des ressources enfants.See Set name and type for child resources.
commentscomments NonNo Vos commentaires pour documenter les ressources dans votre modèle.Your notes for documenting the resources in your template. Pour plus d’informations, consultez Commentaires dans les modèles.For more information, see Comments in templates.
locationlocation VariableVaries Emplacements géographiques de la ressource fournie pris en charge.Supported geo-locations of the provided resource. Vous pouvez sélectionner l’un des emplacements disponibles, mais en général, il est judicieux de choisir celui qui est proche de vos utilisateurs.You can select any of the available locations, but typically it makes sense to pick one that is close to your users. En règle générale, il est également judicieux de placer dans la même région les ressources qui interagissent entre elles.Usually, it also makes sense to place resources that interact with each other in the same region. La plupart des types de ressources nécessitent un emplacement, mais certains types (comme une attribution de rôle) n’ont pas besoin d’emplacement.Most resource types require a location, but some types (such as a role assignment) don't require a location. Voir Définir l’emplacement des ressources.See Set resource location.
dependsOndependsOn NonNo Les ressources qui doivent être déployées avant le déploiement de cette ressource.Resources that must be deployed before this resource is deployed. Resource Manager évalue les dépendances entre les ressources et les déploie dans le bon ordre.Resource Manager evaluates the dependencies between resources and deploys them in the correct order. Quand les ressources ne dépendent pas les unes des autres, elles sont déployées en parallèle.When resources aren't dependent on each other, they're deployed in parallel. La valeur peut être une liste séparée par des virgules de noms de ressource ou d’identificateurs de ressource uniques.The value can be a comma-separated list of a resource names or resource unique identifiers. Répertoriez uniquement les ressources qui sont déployées dans ce modèle.Only list resources that are deployed in this template. Les ressources qui ne sont pas définies dans ce modèle doivent déjà exister.Resources that aren't defined in this template must already exist. Évitez d’ajouter des dépendances inutiles, car cela risque de ralentir votre déploiement et de créer des dépendances circulaires.Avoid adding unnecessary dependencies as they can slow your deployment and create circular dependencies. Pour savoir comment définir des dépendances, consultez Définition de dépendances dans les modèles Azure Resource Manager.For guidance on setting dependencies, see Defining dependencies in Azure Resource Manager templates.
tagstags NonNo Balises associées à la ressource.Tags that are associated with the resource. Appliquer des balises pour organiser logiquement des ressources dans votre abonnement.Apply tags to logically organize resources across your subscription.
skusku NonNo Certaines ressources autorisent les valeurs qui définissent la référence SKU à déployer.Some resources allow values that define the SKU to deploy. Par exemple, vous pouvez spécifier le type de redondance pour un compte de stockage.For example, you can specify the type of redundancy for a storage account.
kindkind NonNo Certaines ressources autorisent une valeur qui définit le type de ressource que vous déployez.Some resources allow a value that defines the type of resource you deploy. Par exemple, vous pouvez spécifier le type Cosmos DB à créer.For example, you can specify the type of Cosmos DB to create.
copycopy NonNo Si plusieurs instances sont nécessaires, le nombre de ressources à créer.If more than one instance is needed, the number of resources to create. Le mode par défaut est parallèle.The default mode is parallel. Spécifiez le mode série si vous ne voulez pas que toutes les ressources soient déployées en même temps.Specify serial mode when you don't want all or the resources to deploy at the same time. Pour plus d’informations, consultez Créer plusieurs instances de ressources dans Azure Resource Manager.For more information, see Create several instances of resources in Azure Resource Manager.
Planplan NonNo Certaines ressources autorisent les valeurs qui définissent le plan à déployer.Some resources allow values that define the plan to deploy. Par exemple, vous pouvez spécifier l’image de marketplace pour une machine virtuelle.For example, you can specify the marketplace image for a virtual machine.
propertiesproperties NonNo Paramètres de configuration spécifiques aux ressources.Resource-specific configuration settings. Les valeurs de propriétés sont identiques à celles que vous fournissez dans le corps de la requête pour l’opération d’API REST (méthode PUT) pour créer la ressource.The values for the properties are the same as the values you provide in the request body for the REST API operation (PUT method) to create the resource. Vous pouvez aussi spécifier une copie en groupe pour créer plusieurs instances d’une propriété.You can also specify a copy array to create several instances of a property. Pour déterminer les valeurs disponibles, consultez référence de modèle.To determine available values, see template reference.
les ressourcesresources NonNo Ressources enfants qui dépendent de la ressource qui est définie.Child resources that depend on the resource being defined. Fournissez uniquement des types de ressources qui sont autorisés par le schéma de la ressource parente.Only provide resource types that are permitted by the schema of the parent resource. La dépendance sur la ressource parente n’est pas induite.Dependency on the parent resource isn't implied. Vous devez la définir explicitement.You must explicitly define that dependency. Consultez Définition du nom et du type des ressources enfants.See Set name and type for child resources.

OutputsOutputs

Dans la section des sorties, vous spécifiez des valeurs retournées à partir du déploiement.In the Outputs section, you specify values that are returned from deployment. En règle générale, vous retournez des valeurs de ressources qui ont été déployées.Typically, you return values from resources that were deployed.

L'exemple suivant illustre la structure de la définition d'une sortie :The following example shows the structure of an output definition:

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Nom de l'élémentElement name ObligatoireRequired DescriptionDescription
output-nameoutput-name OuiYes Nom de la valeur de sortie.Name of the output value. Doit être un identificateur JavaScript valide.Must be a valid JavaScript identifier.
conditioncondition NonNo Valeur booléenne qui indique si cette valeur de sortie est retournée.Boolean value that indicates whether this output value is returned. Si elle est égale à true, cela signifie que la valeur est incluse dans la sortie pour le déploiement.When true, the value is included in the output for the deployment. Si elle est égale à false, la valeur de sortie est ignorée pour ce déploiement.When false, the output value is skipped for this deployment. Lorsqu’elle n’est pas spécifiée, la valeur par défaut est true.When not specified, the default value is true.
typetype OuiYes Type de la valeur de sortie.Type of the output value. Les valeurs de sortie prennent en charge les mêmes types que les paramètres d'entrée du modèle.Output values support the same types as template input parameters. Si vous spécifiez securestring pour le type de sortie, la valeur n’est pas affichée dans l’historique de déploiement et ne peut pas être récupérée à partir d’un autre modèle.If you specify securestring for the output type, the value isn't displayed in the deployment history and can't be retrieved from another template. Pour utiliser une valeur secrète dans plusieurs modèles, stockez la clé secrète dans un coffre de clés et référencez la clé secrète dans le fichier de paramètres.To use a secret value in more than one template, store the secret in a Key Vault and reference the secret in the parameter file. Pour plus d’informations, consultez l’article Utiliser Azure Key Vault pour transmettre une valeur de paramètre sécurisée pendant le déploiement.For more information, see Use Azure Key Vault to pass secure parameter value during deployment.
valuevalue NonNo Expression du langage du modèle évaluée et retournée sous forme de valeur de sortie.Template language expression that is evaluated and returned as output value. Spécifiez valueou copy.Specify either value or copy.
copycopy NonNo Utilisé pour retourner plusieurs valeurs pour une sortie.Used to return more than one value for an output. Spécifiez valueou copy.Specify value or copy. Pour plus d’informations, voir Itération de sorties dans des modèles Azure Resource Manager.For more information, see Output iteration in Azure Resource Manager templates.

Pour obtenir des exemples d’utilisation des sorties, consultez Sorties dans un modèle Azure Resource Manager.For examples of how to use outputs, see Outputs in Azure Resource Manager template.

Commentaires et métadonnéesComments and metadata

Vous avez quelques options permettant d’ajouter des commentaires et des métadonnées à votre modèle.You have a few options for adding comments and metadata to your template.

CommentairesComments

Pour les commentaires inclus, vous pouvez utiliser // ou /* ... */, mais cette syntaxe ne fonctionne pas avec tous les outils.For inline comments, you can use either // or /* ... */ but this syntax doesn't work with all tools. Vous ne pouvez pas utiliser l’éditeur de modèle du portail pour travailler sur des modèles avec des commentaires inclus.You can't use the portal template editor to work on templates with inline comments. Si vous ajoutez ce style de commentaire, vérifiez que les outils que vous utilisez prennent en charge les commentaires JSON inclus.If you add this style of comment, be sure the tools you use support inline JSON comments.

Notes

Pour déployer des modèles avec des commentaires à l’aide d’Azure CLI, vous devez utiliser le commutateur --handle-extended-json-format.To deploy templates with comments by using Azure CLI, you must use the --handle-extended-json-format switch.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Dans Visual Studio Code, l’extension Azure Resource Manager Tools peut détecter automatiquement un modèle Resource Manager et modifier le mode de langage en conséquence.In Visual Studio Code, the Azure Resource Manager Tools extension can automatically detect Resource Manager template and change the language mode accordingly. Si Modèle Azure Resource Manager s’affiche dans l’angle inférieur droit de VS Code, vous pouvez utiliser les commentaires inclus.If you see Azure Resource Manager Template at the bottom-right corner of VS Code, you can use the inline comments. Les commentaires inclus ne sont plus signalés comme étant non valides.The inline comments are no longer marked as invalid.

Mode de modèle Azure Resource Manager Visual Studio Code

MétadonnéesMetadata

Vous pouvez ajouter un objet metadata presque n’importe où dans votre modèle.You can add a metadata object almost anywhere in your template. Resource Manager ignore l’objet, mais votre éditeur JSON peut vous avertir que la propriété n’est pas valide.Resource Manager ignores the object, but your JSON editor may warn you that the property isn't valid. Dans l’objet, définissez les propriétés dont vous avez besoin.In the object, define the properties you need.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Pour parameters, ajoutez un objet metadata avec une propriété description.For parameters, add a metadata object with a description property.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Lorsque vous déployez le modèle par le biais du portail, le texte que vous fournissez dans la description est automatiquement utilisé comme une info-bulle pour ce paramètre.When deploying the template through the portal, the text you provide in the description is automatically used as a tip for that parameter.

Afficher le paramètre conseillé

Pour resources, ajoutez un élément comments ou un objet de métadonnées.For resources, add a comments element or a metadata object. L’exemple suivant montre à la fois un élément de commentaires et un objet de métadonnées.The following example shows both a comments element and a metadata object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[concat('storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Pour outputs, ajoutez un objet de métadonnées à la valeur de sortie.For outputs, add a metadata object to the output value.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

Vous ne pouvez pas ajouter un objet de métadonnées aux fonctions définies par l’utilisateur.You can't add a metadata object to user-defined functions.

Chaînes à lignes multiplesMulti-line strings

Vous pouvez scinder une chaîne en plusieurs lignes.You can break a string into multiple lines. Par exemple, voir la propriété location et l’un des commentaires dans l’exemple JSON suivant.For example, see the location property and one of the comments in the following JSON example.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2018-10-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Pour déployer des modèles avec des chaînes à plusieurs lignes à l’aide d’Azure CLI, vous devez utiliser le commutateur --handle-extended-json-format.To deploy templates with multi-line strings by using Azure CLI, you must use the --handle-extended-json-format switch.

Étapes suivantesNext steps