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.
Découvrez comment créer une spec de modèle avec un modèle principal et un modèle lié. Vous utilisez des spécifications de modèle pour partager des modèles ARM avec d’autres utilisateurs de votre organisation. Cet article vous montre comment créer une spécification de modèle pour empaqueter un modèle principal et ses modèles liés à l’aide de la relativePath propriété de la ressource de déploiement.
Conditions préalables
Un compte Azure avec un abonnement actif. Créez gratuitement un compte.
Remarque
Pour utiliser des spécifications de modèle avec Azure PowerShell, vous devez installer la version 5.0.0 ou ultérieure. Pour l’utiliser avec Azure CLI, utilisez la version 2.14.2 ou ultérieure.
Créer des modèles liés
Créez le modèle principal et le modèle lié.
Pour lier un modèle, ajoutez une ressource de déploiement à votre modèle principal. Dans la templateLink propriété, spécifiez le chemin relatif du modèle lié conformément au chemin d’accès du modèle parent.
Le modèle lié est appelé linkedTemplate.jsonet est stocké dans un sous-dossier appelé artefacts dans le chemin d’accès où le modèle principal est stocké. Vous pouvez utiliser l’une des valeurs suivantes pour le relativePath :
./artifacts/linkedTemplate.json/artifacts/linkedTemplate.jsonartifacts/linkedTemplate.json
La relativePath propriété est toujours relative au fichier relativePath de modèle où elle est déclarée. Par conséquent, s’il existe une autre linkedTemplate2.json appelée à partir de linkedTemplate.json et linkedTemplate2.json est stockée dans le sous-dossier des artefacts, le relativePath spécifié dans linkedTemplate.json est juste linkedTemplate2.json.
Créez le modèle principal avec le code JSON suivant. Enregistrez le modèle principal sous le nom de azuredeploy.json sur votre ordinateur local. Ce tutoriel part du principe que vous avez enregistré dans le chemin d’accès c:\Templates\linkedTS\azuredeploy.json, mais vous pouvez utiliser n’importe quel chemin.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "defaultValue": "westus2", "metadata":{ "description": "Specify the location for the resources." } }, "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "metadata":{ "description": "Specify the storage account type." } } }, "variables": { "appServicePlanName": "[format('plan{0}', uniquestring(resourceGroup().id))]" }, "resources": [ { "type": "Microsoft.Web/serverfarms", "apiVersion": "2025-03-01", "name": "[variables('appServicePlanName')]", "location": "[parameters('location')]", "sku": { "name": "B1", "tier": "Basic", "size": "B1", "family": "B", "capacity": 1 }, "kind": "linux", "properties": { "perSiteScaling": false, "reserved": true, "targetWorkerCount": 0, "targetWorkerSizeId": 0 } }, { "type": "Microsoft.Resources/deployments", "apiVersion": "2025-04-01", "name": "createStorage", "properties": { "mode": "Incremental", "templateLink": { "relativePath": "artifacts/linkedTemplate.json" }, "parameters": { "storageAccountType": { "value": "[parameters('storageAccountType')]" } } } } ] }Remarque
La valeur apiVersion de
Microsoft.Resources/deploymentsdoit être 2020-06-01 ou une version ultérieure.Créez un répertoire appelé artefacts dans le dossier dans lequel le modèle principal est enregistré.
Créez le modèle lié avec le code JSON suivant :
{ "$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('store{0}', 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')]" } } }Enregistrez le modèle en tant quelinkedTemplate.json dans le dossier artefacts .
Créer une spec de modèle
Les spécifications des modèles sont stockées dans des groupes de ressources. Créez un groupe de ressources, puis créez une spécification de modèle avec le script suivant. Le nom de spécification du modèle est webSpec.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
New-AzTemplateSpec `
-Name webSpec `
-Version "1.0.0.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\linkedTS\azuredeploy.json"
Lorsque vous avez terminé, vous pouvez afficher la spécification du modèle à partir du portail Azure ou à l’aide de l’applet de commande suivante :
Get-AzTemplateSpec -ResourceGroupName templatespecRG -Name webSpec
Déployer une spec de modèle
Vous pouvez maintenant déployer la spécification du modèle. Le déploiement de la spec de modèle est tout comme le déploiement du modèle qu’il contient, sauf que vous transmettez l’ID de ressource de la spécification du modèle. Vous utilisez les mêmes commandes de déploiement et, si nécessaire, transmettez les valeurs de paramètre pour la spécification du modèle.
New-AzResourceGroup `
-Name webRG `
-Location westus2
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name webSpec -Version "1.0.0.0").Versions.Id
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName webRG
Étapes suivantes
Pour en savoir plus sur le déploiement d’une spec de modèle en tant que modèle lié, consultez Tutoriel : Déployer une spec de modèle en tant que modèle lié.