Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour déployer une ressource via un modèle Azure Resource Manager (modèle ARM), vous ajoutez une déclaration de ressource. Utilisez le resources
tableau dans un modèle JSON.
languageVersion 2.0 répertorie les améliorations apportées aux modèles JSON ARM, telles que la modification de la déclaration de ressources d’un tableau en objet. La plupart des exemples présentés dans cet article utilisent toujours le tableau resources
. Pour plus d’informations spécifiques à languageVersion 2.0, consultez Utiliser un nom symbolique.
Remarque
La version actuelle de l’extension Azure Resource Manager Tools pour Visual Studio Code ne reconnaît pas les améliorations apportées à languageVersion 2.0.
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 la déclaration de ressource.
Vous êtes limité à 800 ressources dans un modèle. Pour plus d’informations, consultez Limites du modèle.
Définir le type de ressource et la version
Lorsque vous ajoutez une ressource à votre modèle, commencez par définir le type de ressource et la version de l’API. Ces valeurs déterminent les autres propriétés disponibles pour la ressource.
L’exemple suivant montre comment définir le type de ressource et la version de l’API pour un compte de stockage. L’exemple n’affiche pas la déclaration de ressource complète.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
...
}
]
Définir le nom de la ressource
Chaque ressource a un nom. Lorsque vous définissez le nom de la ressource, soyez attentif aux règles et restrictions applicables aux noms de ressources.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
...
}
]
Définir l’emplacement
De nombreuses ressources nécessitent un emplacement. Vous pouvez déterminer si la ressource a besoin d’un emplacement via IntelliSense ou une référence de modèle. L’exemple suivant ajoute un paramètre d’emplacement utilisé pour le compte de stockage.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
...
}
]
Pour plus d’informations, consultez Définir l’emplacement des ressources dans un modèle Resource Manager.
Définir des étiquettes
Vous pouvez appliquer des étiquettes à une ressource pendant le déploiement. Les étiquettes vous aident à organiser logiquement vos ressources déployées. Pour obtenir des exemples de différentes façons de spécifier les étiquettes, consultez Étiquettes de modèle ARM.
Définir des propriétés spécifiques aux ressources
Les propriétés précédentes sont génériques pour la plupart des types de ressources. Après avoir défini ces valeurs, vous devez définir les propriétés qui sont spécifiques du type de ressource que vous déployez.
Utilisez intellisense ou référence de modèle pour déterminer les propriétés disponibles et celles qui sont requises. L’exemple suivant définit les propriétés restantes pour un compte de stockage.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Utiliser un nom symbolique
Dans Bicep, chaque définition de ressource a un nom symbolique. Le nom symbolique est utilisé pour référencer la ressource à partir des autres parties de votre fichier Bicep. Pour prendre en charge le nom symbolique dans les modèles ARM JSON, ajoutez languageVersion
avec la version 2.0
et remplacez la définition de ressource d’un tableau par un objet. Lorsque languageVersion
est spécifié pour un modèle, un nom symbolique doit être spécifié pour les ressources de niveau racine. Par exemple:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
...
}
]
}
Le code JSON précédent peut être écrit dans le code JSON suivant :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"aks": {
"type": "Microsoft.ContainerService/managedClusters",
...
}
}
}
Les noms symboliques respectent la casse. Les caractères autorisés pour les noms symboliques sont des lettres, des chiffres et _. Les noms symboliques doivent être uniques dans un modèle, mais peuvent chevaucher des noms de variables, des noms de paramètres et des noms de sortie dans un modèle. Dans l’exemple suivant, le nom symbolique de la ressource de compte de stockage porte le même nom que la sortie.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"myStorage": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
},
"outputs": {
"myStorage":{
"type": "object",
"value": "[reference('myStorage')]"
}
}
}
La fonction de référence peut utiliser le nom symbolique d’une ressource, comme illustré dans l’exemple précédent. La fonction de référence ne peut plus utiliser le nom d’une ressource, par exemple, reference(parameters('storageAccountName'))
n’est pas autorisée.
Si la ressource Deployments est utilisée dans un déploiement de nom symbolique, utilisez apiVersion 2020-09-01
ou version ultérieure.
Déclarer des ressources existantes
Avec languageVersion 2.0
et en utilisant un nom symbolique pour la déclaration de ressource, vous pouvez déclarer des ressources existantes. Une propriété de ressource de niveau supérieur de "existing": true
amène ARM à lire plutôt qu'à déployer une ressource, comme illustré dans l'exemple suivant :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"languageVersion": "2.0",
"resources": {
"storageAccount": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "storageacct",
"existing": true
}
},
"outputs": {
"saBlocksPlaintext": {
"type": "bool",
"value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
}
}
}
Les ressources existantes n’ont pas besoin de définir des propriétés autres que type
, apiVersion
et name
.
Étapes suivantes
- Pour déployer une ressource de manière conditionnelle, consultez Déploiement conditionnel dans les modèles ARM.
- Pour définir des dépendances de ressources, consultez Définir l’ordre de déploiement des ressources dans des modèles ARM.