Ce guide de démarrage rapide montre comment empaqueter un modèle Azure Resource Manager (modèle ARM) dans une spec de modèle. Ensuite, vous déployez cette spec de modèle. Votre spec de modèle contient un modèle ARM qui déploie un compte de stockage.
Prerequisites
Compte Azure avec un abonnement actif.
Créez un compte gratuitement.
Créer un modèle
Vous créez une spécification de modèle à partir d’un modèle ARM. Copiez le modèle suivant et enregistrez-le sous C:\Templates\createStorageV1.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Créer une spec de modèle
La spec de modèle est un type de ressource nommé Microsoft.Resources/templateSpecs. Pour créer une spécification de modèle, utilisez PowerShell, Azure CLI, le portail Azure ou un modèle ARM.
Créez un groupe de ressources pour contenir la spec de modèle.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
Créez la spec de modèle dans ce groupe de ressources. Attribuez le nom storageSpec à la nouvelle spec de modèle.
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV1.json"
Créez un groupe de ressources pour contenir la spec de modèle.
az group create \
--name templateSpecRG \
--location westus2
Créez la spec de modèle dans ce groupe de ressources. Attribuez le nom storageSpec à la nouvelle spec de modèle.
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV1.json"
Connectez-vous au portail Azure.
Recherchez specs de modèle. Sélectionnez Specs de modèle parmi les options disponibles.
Sélectionnez Importer un modèle, puis suivez les instructions pour importer C:\Templates\createStorageV1.json que vous avez enregistré précédemment.
Renseignez les valeurs suivantes :
-
Nom : entrez un nom pour la spec de modèle. Par exemple, storageSpec.
-
Abonnement : sélectionnez l’abonnement Azure utilisé pour créer la spec de modèle.
-
Groupe de ressources : sélectionnez Créer nouveau, puis entrez un nouveau nom de groupe de ressources. Par exemple, templateSpecRG.
-
Emplacement : sélectionnez un emplacement pour le groupe de ressources. Par exemple, USA Ouest 2.
-
Version : entrez une version pour la spec de modèle. Utilisez 1.0.
Sélectionnez Vérifier + créer, puis Créer.
Note
Nous vous recommandons d’utiliser PowerShell ou CLI au lieu d’un modèle ARM pour créer votre spec de modèle. Ces outils convertissent automatiquement les modèles liés en artefacts associés au modèle principal. Si vous utilisez un modèle ARM, vous devez ajouter manuellement des modèles liés en tant qu’artefacts, ce qui peut être plus complexe.
Lorsque vous utilisez un modèle ARM pour créer la spec de modèle, le modèle est incorporé dans la définition de la ressource. Copiez le modèle suivant, et enregistrez-le localement sous createTemplateSpec.json :
Note
Dans le modèle incorporé, toutes les expressions de modèle doivent être échappées au moyen d’un deuxième crochet gauche. Utilisez "[[ au lieu de "[. Les tableaux JSON utilisent toujours un seul crochet gauche. Consultez les propriétés de nom et d’emplacement dans l’exemple ci-dessous :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '1.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[uniqueString(resourceGroup().id)]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Utilisez Azure CLI ou PowerShell pour créer un groupe de ressources.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
Déployez votre modèle avec Azure CLI ou PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSepc.json"
Vérifiez le déploiement avec Azure CLI ou PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Déployer une spec de modèle
Pour déployer une spec de modèle, utilisez les mêmes commandes de déploiement que celles que vous utiliseriez pour déployer un modèle. Transmettez l’ID de ressource de la spec de modèle à déployer.
Créez un groupe de ressources pour accueillir le nouveau compte de stockage.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
Obtenez l’ID de ressource de la spec de modèle.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
Déployez la spec de modèle.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
Fournissez les paramètres exactement comme vous le feriez pour un modèle ARM. Redéployez la spec de modèle avec un paramètre pour le type de compte de stockage.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
Créez un groupe de ressources pour accueillir le nouveau compte de stockage.
az group create \
--name storageRG \
--location westus2
Obtenez l’ID de ressource de la spec de modèle.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
Note
Il existe un problème connu lié à l’obtention de l’ID de la spec de modèle et à son affectation à une variable dans Windows PowerShell.
Déployez la spec de modèle.
az deployment group create \
--resource-group storageRG \
--template-spec $id
Fournissez les paramètres exactement comme vous le feriez pour un modèle ARM. Redéployez la spec de modèle avec un paramètre pour le type de compte de stockage.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
Sélectionnez la spec de modèle que vous avez créée. Utilisez la zone de recherche pour rechercher la spécification du modèle s’il y en a beaucoup.
Sélectionnez Déployer.
Renseignez les valeurs suivantes :
-
Abonnement : sélectionnez un abonnement Azure pour créer la ressource.
-
Groupe de ressources : sélectionnez Créer nouveau, puis entrez storageRG.
Sélectionnez Examiner + créer, puis sélectionnez Créer.
Copiez le modèle suivant et enregistrez-le localement sous le nom de deployTemplateSpecV1.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
Dans le modèle, templateSpecRG est le nom du groupe de ressources qui contient la spécification du modèle, storageSpec est le nom de la spécification du modèle, et 1.0 est la version de la spécification du modèle.
Utilisez Azure CLI ou PowerShell pour créer un groupe de ressources pour le compte de stockage.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
Déployez votre modèle avec Azure CLI ou PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV1.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV1.json"
Vérifiez le déploiement avec Azure CLI ou PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Accorder l'accès
Pour permettre à d’autres utilisateurs de votre organisation de déployer votre spec de modèle, accordez leur un accès en lecture. Attribuez le rôle Lecteur à un groupe de Microsoft Entra pour le groupe de ressources contenant les specs de modèle que vous souhaitez partager. Pour plus d’informations, consultez le Tutoriel : Accorder à un groupe l’accès aux ressources Azure à l’aide d’Azure PowerShell.
Mettre à jour le modèle
Pour apporter une modification au modèle dans votre spécification de modèle, modifiez le modèle. Le modèle suivant est similaire à votre modèle précédent, sauf qu’il ajoute un préfixe pour le nom du compte de stockage. Copiez le modèle suivant et enregistrez-le en tant que fichier createStorageV2.json .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Mettre à jour la version de spec de modèle
Au lieu de créer une spécification de modèle pour le modèle révisé, ajoutez une nouvelle version nommée 2.0 à la spécification de modèle existante. Vous pouvez déployer l’une ou l’autre version.
Créez une nouvelle version du spec de modèle.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "C:\Templates\createStorageV2.json"
Pour déployer la nouvelle version, récupérez l’ID de ressource pour la version 2.0.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
Déployez cette version. Indiquez le préfixe du nom du compte de stockage.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
Créez une nouvelle version du spec de modèle.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "C:\Templates\createStorageV2.json"
Pour déployer la nouvelle version, récupérez l’ID de ressource pour la version 2.0.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
Déployez cette version. Indiquez le préfixe du nom du compte de stockage.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
Ouvrez le spec de modèle storageSpec, puis sélectionnez Créer une nouvelle version.
Sélectionnez 1.0 comme modèle de base, puis sélectionnez Créer.
Nommez la nouvelle version 2.0 et ajoutez éventuellement des notes. Sélectionnez Modifier un modèle.
Remplacez le contenu du modèle par le modèle mis à jour. Sélectionnez Vérifier + enregistrer.
Sélectionnez Enregistrer les modifications.
Pour déployer la nouvelle version, sélectionnez Versions.
Ouvrez la nouvelle version, puis sélectionnez Déployer.
Renseignez les champs comme vous l’avez fait lors du déploiement de la version antérieure.
Sélectionnez Examiner + créer, puis sélectionnez Créer.
Là encore, vous devez apporter quelques modifications à votre modèle local pour qu’il fonctionne avec des specs de modèle. Copiez le modèle suivant, et enregistrez-le localement sous createTemplateSpec.json :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2022-02-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
}
},
{
"type": "Microsoft.Resources/templateSpecs/versions",
"apiVersion": "2022-02-01",
"name": "[format('{0}/{1}', 'storageSpec', '2.0')]",
"location": "westus2",
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[[parameters('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
},
"dependsOn": [
"storageSpec"
]
}
]
}
Pour ajouter la nouvelle version à votre spec de modèle, déployez votre modèle avec Azure CLI ou PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "C:\Templates\createTemplateSpec.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "C:\Templates\createTemplateSpec.json"
vérifiez le déploiement avec Azure CLI ou PowerShell.
Get-AzTemplateSpec `
-ResourceGroupName templateSpecRG `
-Name storageSpec
az ts show \
--resource-group templateSpecRG \
--name storageSpec
Vous devez voir la nouvelle version 2.0 dans la liste des versions.
Copiez le modèle suivant et enregistrez-le localement sous le nom deployTemplateSpecV2.json :
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
]
}
Déployez votre modèle avec Azure CLI ou PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "C:\Templates\deployTemplateSpecV2.json"
az deployment group create \
--resource-group storageRG \
--template-file "C:\Templates\deployTemplateSpecV2.json"
Vérifiez le déploiement avec Azure CLI ou PowerShell.
Get-AzResource `
-ResourceGroupName storageRG
az resource list \
--resource-group storageRG
Vous devez voir le nouveau compte de stockage avec un nom qui commence par store et une chaîne unique basée sur l’ID du groupe de ressources.
Nettoyer les ressources
Pour nettoyer la ressource que vous avez déployée dans le cadre de ce démarrage rapide, supprimez les deux groupes de ressources que vous avez créés.
- Dans le portail Azure, sélectionnez Groupe de ressources dans le menu de gauche.
- Entrez le nom du groupe de ressources (templateSpecRG et storageRG) dans le champ Filtrer par nom.
- Sélectionnez le nom du groupe de ressources.
- Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.
Étapes suivantes
Pour en savoir plus sur la création d’une spécification de modèle qui inclut des modèles liés, découvrez comment créer une spécification de modèle d’un modèle lié.