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.
Cet article explique comment utiliser l’API REST Azure Resource Manager avec des modèles Azure Resource Manager (modèles ARM) pour déployer vos ressources sur Azure.
Vous pouvez inclure votre modèle dans le corps de la demande ou lier à un fichier. Lorsque vous utilisez un fichier, il peut s’agir d’un fichier local ou d’un fichier externe disponible via un URI. Lorsque votre modèle se trouve dans un compte de stockage, vous pouvez restreindre l’accès au modèle et fournir un jeton de signature d’accès partagé (SAP) pendant le déploiement.
Prerequisites
Autorisations requises
Pour déployer un fichier Bicep ou un modèle Azure Resource Manager (ARM), vous avez besoin d’un accès en écriture sur les ressources que vous déployez et d'avoir accès à toutes les opérations sur ce type de ressource. Par exemple, pour déployer une machine virtuelle, vous avez besoin des autorisations Microsoft.Compute/virtualMachines/write et Microsoft.Resources/deployments/*. L’opération de simulation a les mêmes exigences d’autorisation.
Azure CLI version 2.76.0 ou ultérieure et Azure PowerShell version 13.4.0 ou ultérieure introduisent le commutateur ValidationLevel pour déterminer la façon dont ARM valide le modèle Bicep pendant ce processus. Pour plus d’informations, consultez les commandes What-if
Pour obtenir la liste des rôles et des autorisations, consultez les rôles intégrés Azure.
Étendue du déploiement
Vous pouvez cibler votre déploiement sur un groupe de ressources, un abonnement Azure, un groupe d’administration ou un locataire. Les commandes à utiliser diffèrent en fonction de l’étendue du déploiement.
Pour effectuer un déploiement sur un groupe de ressources, utilisez Déploiements - Créer. La demande est envoyée à :
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Pour effectuer un déploiement sur un abonnement, utilisez Déploiements - Créer au niveau de l’étendue de l’abonnement. La demande est envoyée à :
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Pour plus d’informations sur les déploiements au niveau de l’abonnement, consultez Créer des groupes de ressources et des ressources au niveau de l’abonnement.
Pour effectuer un déploiement sur un groupe d’administration, utilisez Déploiements - Créer au niveau de l’étendue du groupe d’administration. La demande est envoyée à :
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Pour plus d’informations sur les déploiements au niveau du groupe d’administration, consultez Créer des ressources au niveau du groupe d’administration.
Pour effectuer un déploiement sur un client, utilisez Déploiements - Créer ou mettre à jour au niveau du client. La demande est envoyée à :
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Pour plus d’informations sur les déploiements au niveau du locataire, consultez Créer des ressources au niveau du locataire.
Les exemples de cet article utilisent des déploiements de groupes de ressources.
Déployer avec l’API REST
Définissez les paramètres et les en-têtes courants, y compris les jetons d’authentification.
Si vous effectuez un déploiement vers un groupe de ressources qui n’existe pas, vous devez commencer par créer ce dernier. Fournissez votre ID d’abonnement, le nom du nouveau groupe de ressources et l’emplacement dont vous avez besoin pour votre solution. Pour plus d’informations, consultez Créer un groupe de ressources.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01Avec un corps de demande comme suit :
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }Avant de déployer votre modèle, vous pouvez obtenir un aperçu des changements que le modèle apportera à votre environnement. Utilisez l’opération de simulation pour vérifier que le modèle apporte les modifications attendues. Cette opération vérifie aussi que le modèle est exempt d’erreurs.
Pour déployer un modèle, fournissez votre ID d’abonnement, le nom du groupe de ressources, le nom du déploiement dans l’URI de requête.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01Dans le corps de la demande, fournissez un lien vers votre modèle et fichier de paramètres. Pour plus d’informations sur le fichier de paramètres, consultez Créer un fichier de paramètres Resource Manager.
Notez que
modeest réglé sur incrémentiel. Pour exécuter un déploiement complet, définissezmodesur Complet. Veillez à utiliser le mode complet, car vous pouvez supprimer par inadvertance des ressources qui ne se trouvent pas dans votre modèle.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental" } }Si vous souhaitez consigner le contenu de réponse, le contenu de la demande ou les deux, incluez-le
debugSettingdans la demande.{ "properties": { "templateLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json", "contentVersion": "1.0.0.0" }, "parametersLink": { "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json", "contentVersion": "1.0.0.0" }, "mode": "Incremental", "debugSetting": { "detailLevel": "requestContent, responseContent" } } }Vous pouvez configurer votre compte de stockage pour utiliser un jeton de signature d’accès partagé (SAP). Pour plus d’informations, consultez Déléguer l’accès avec une signature d’accès partagé.
Si vous devez fournir une valeur sensible pour un paramètre (par exemple, un mot de passe), ajoutez cette valeur à un coffre de clés. Récupérez le coffre de clés pendant le déploiement comme indiqué dans l’exemple précédent. Pour plus d’informations, consultez Utiliser Azure Key Vault pour passer une valeur de paramètre sécurisée pendant le déploiement.
Au lieu de lier des fichiers pour le modèle et les paramètres, vous pouvez les inclure dans le corps de la requête. L’exemple suivant montre le corps de la requête avec le modèle et le paramètre inline :
{ "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_ZRS", "Premium_LRS" ], "metadata": { "description": "Storage Account type" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } } }, "variables": { "storageAccountName": "[format('{0}standardsa', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2025-06-01", "name": "[variables('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "StorageV2", "properties": {} } ], "outputs": { "storageAccountName": { "type": "string", "value": "[variables('storageAccountName')]" } } }, "parameters": { "location": { "value": "eastus2" } } } }Pour obtenir l’état du déploiement du modèle, utilisez Deployments - Get.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Déployer avec ARMClient
ARMClient est un outil en ligne de commande simple pour appeler l’API Azure Resource Manager. Pour installer l’outil, consultez ARMClient .
Pour répertorier vos abonnements :
armclient GET /subscriptions?api-version=2021-04-01
Pour répertorier vos groupes de ressources :
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Remplacez <l’ID> d’abonnement par votre ID d’abonnement Azure.
Pour créer un groupe de ressources dans la région USA Centre :
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
Vous pouvez également placer le corps dans un fichier JSON appelé CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Pour plus d’informations, consultez ARMClient : outil en ligne de commande pour l’API Azure.
Nom du déploiement
Vous pouvez donner à votre déploiement un nom tel que ExampleDeployment.
Chaque fois que vous exécutez un déploiement, une entrée est ajoutée à l’historique de déploiement du groupe de ressources avec le nom du déploiement. Si vous exécutez un autre déploiement et que vous lui attribuez le même nom, l’entrée précédente est remplacée par le déploiement actuel. Si vous souhaitez conserver des entrées uniques dans l’historique de déploiement, attribuez un nom unique à chaque déploiement.
Pour créer un nom unique, vous pouvez assigner un numéro aléatoire. Vous pouvez aussi ajouter une valeur de date.
Si vous exécutez des déploiements simultanés dans le même groupe de ressources avec le même nom de déploiement, seul le dernier déploiement aboutit. Les déploiements de même nom qui n’arrivent pas à terme sont remplacés par le dernier déploiement. Par exemple, si vous exécutez un déploiement nommé newStorage qui déploie un compte de stockage nommé storage1 et que, dans le même temps, vous exécutez un autre déploiement nommé newStorage qui déploie un compte de stockage nommé storage2, vous ne déployez qu’un seul compte de stockage. Le compte de stockage qui en résulte est nommé storage2.
En revanche, si vous exécutez un déploiement nommé newStorage qui déploie un compte de stockage nommé storage1 et que, aussitôt terminé, vous exécutez un autre déploiement nommé newStorage qui déploie un compte de stockage nommé storage2, vous disposez de deux comptes de stockage : un nommé storage1 et l’autre nommé storage2. Cependant, l’historique de déploiement ne présente qu’une seule entrée.
Quand vous spécifiez un nom unique pour chaque déploiement, vous pouvez les exécuter simultanément sans conflit. Si vous exécutez un déploiement nommé newStorage1 qui déploie un compte de stockage nommé storage1 et que, dans le même temps, vous exécutez un autre déploiement nommé newStorage2 qui déploie un compte de stockage nommé storage2, vous disposez de deux comptes de stockage et l’historique de déploiement présente deux entrées.
Pour éviter les conflits lors de déploiements simultanés et faire en sorte que l’historique de déploiement présente des entrées uniques, attribuez un nom unique à chaque déploiement.
Étapes suivantes
- Pour restaurer un déploiement réussi lorsque vous obtenez une erreur, consultez Restaurer en cas d’erreur vers un déploiement réussi.
- Pour spécifier comment gérer les ressources qui existent dans le groupe de ressources, mais qui ne sont pas définies dans le modèle, consultez les modes de déploiement d’Azure Resource Manager.
- Pour en savoir plus sur la gestion des opérations REST asynchrones, consultez Suivre les opérations Azure asynchrones.
- Pour en savoir plus sur les modèles, consultez Comprendre la structure et la syntaxe des modèles ARM.