Remarque
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.
Vous devez parfois déployer une ressource dans un modèle Azure Resource Manager (modèle ARM). Utilisez l’élément condition pour spécifier si la ressource est déployée. La valeur de la condition est définie sur true ou false. Lorsque la valeur est vraie, la ressource est créée. Lorsque la valeur est false, la ressource n’est pas créée. La valeur ne peut être appliquée qu’à l’ensemble de la ressource.
Note
L’exécution du déploiement conditionnel n’inclut pas les ressources enfants. Si vous souhaitez déployer une ressource et ses ressources enfants de manière conditionnelle, vous devez appliquer la même condition à chaque type de ressource.
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 déploiements conditionnels.
Condition de déploiement
Vous pouvez transmettre une valeur de paramètre qui indique si une ressource est déployée. L’exemple suivant déploie conditionnellement une zone DNS.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"deployZone": {
"type": "bool",
"defaultValue": true
}
},
"functions": [],
"resources": [
{
"condition": "[parameters('deployZone')]",
"type": "Microsoft.Network/dnsZones",
"apiVersion": "2023-07-01-preview",
"name": "myZone",
"location": "global",
"properties": {
"zoneType": "Public"
}
}
]
}
Pour obtenir un exemple plus complexe, consultez le serveur logique Azure SQL.
Ressource nouvelle ou existante
Vous pouvez utiliser un déploiement conditionnel pour créer une ressource ou en utiliser une existante. L’exemple suivant montre comment déployer un nouveau compte de stockage ou utiliser un compte de stockage existant.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"newOrExisting": {
"type": "string",
"defaultValue": "new",
"allowedValues": [
"new",
"existing"
]
}
},
"resources": [
{
"condition": "[equals(parameters('newOrExisting'), 'new')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
},
{
"condition": "[equals(parameters('newOrExisting'), 'existing')]",
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]"
}
],
"outputs": {
"storageAccountId": {
"type": "string",
"value": "[if(equals(parameters('newOrExisting'), 'new'), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')))]"
}
}
}
Lorsque le paramètre newOrExisting est défini sur new, la condition l’évalue comme true. Le compte de stockage est déployé. Sinon, le compte de stockage existant est utilisé.
Pour obtenir un exemple complet de modèle qui utilise l’élément condition , consultez la machine virtuelle avec un réseau virtuel, un stockage et une adresse IP publique nouveaux ou existants.
Fonctions de runtime
Si vous utilisez une fonction de référence ou de liste avec une ressource déployée conditionnellement, la fonction est évaluée même si la ressource n’est pas déployée. Vous obtenez une erreur si la fonction fait référence à une ressource qui n’existe pas.
Utilisez la fonction if pour vous assurer que la fonction est évaluée uniquement pour les conditions lorsque la ressource est déployée. Consultez la fonction if pour un exemple de modèle qui utilise if et reference avec une ressource déployée conditionnellement.
Vous définissez une ressource comme dépendant d’une ressource conditionnelle exactement comme vous le feriez pour toute autre ressource. Lorsqu’une ressource conditionnelle n’est pas déployée, Azure Resource Manager le supprime automatiquement des dépendances requises.
Mode complet
Si vous déployez un modèle en mode complet et qu’une ressource n’est pas déployée, car condition elle est évaluée à false, le résultat dépend de la version de l’API REST que vous utilisez pour déployer le modèle. Si vous utilisez une version antérieure à 2019-05-10, la ressource n’est pas supprimée. Avec 2019-05-10 ou version ultérieure, la ressource est supprimée. Les dernières versions d’Azure PowerShell et d’Azure CLI suppriment la ressource quand la condition est false.
Étapes suivantes
- Pour un module Learn qui couvre le déploiement conditionnel, consultez Gérer les déploiements cloud complexes à l’aide de fonctionnalités avancées de modèle ARM.
- Pour obtenir des recommandations sur la création de modèles, consultez Bonnes pratiques relatives aux modèles ARM.
- Pour créer plusieurs instances d’une ressource, consultez itération de ressource dans les modèles ARM.