Démarrage rapide : Créer et déployer une spec de modèle

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.

Conseil

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 Démarrage rapide : Créer et déployer un spec de modèle avec Bicep.

Prérequis

Compte Azure avec un abonnement actif. Créez un compte gratuitement.

Notes

Pour utiliser la spec 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 un modèle

Vous créez une spec de modèle à partir d’un modèle local. Copiez le modèle suivant et enregistrez-le localement dans un fichier nommé azuredeploy.json. Ce démarrage rapide part du principe que vous avez enregistré dans le chemin d’accès c:\Templates\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",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.13.1.58284",
      "templateHash": "13120038605368246703"
    }
  },
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The storage account location."
      }
    },
    "storageAccountName": {
      "type": "string",
      "defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "The name of the storage account"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-09-01",
      "name": "[parameters('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[parameters('storageAccountName')]"
    },
    "storageAccountId": {
      "type": "string",
      "value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
    }
  }
}

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 spec de modèle, utilisez PowerShell, Azure CLI, le portail ou un modèle ARM.

  1. Créez un groupe de ressources pour contenir la spec de modèle.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. 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\azuredeploy.json"
    

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.

  1. Créez un groupe de ressources pour accueillir le nouveau compte de stockage.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Obtenez l’ID de ressource de la spec de modèle.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Déployez la spec de modèle.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Vous 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
    

Accorder l'accès

Si vous voulez permettre à d’autres utilisateurs de votre organisation de déployer votre spec de modèle, vous devez leur accorder un accès en lecture. Vous pouvez attribuer 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

Supposons que vous avez identifié une modification que vous aimeriez apporter au modèle dans votre spec de modèle. Le modèle suivant est similaire à votre précédent modèle, à ceci près qu’il ajoute un préfixe pour le nom du compte de stockage. Copiez le modèle suivant et mettez à jour votre fichier azuredeploy.json.

{
  "$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."
      }
    },
    "namePrefix": {
      "type": "string",
      "maxLength": 11,
      "defaultValue": "store",
      "metadata": {
        "description": "Prefix for storage account name"
      }
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Mettre à jour la version de spec de modèle

Au lieu de créer une spec de modèle pour le modèle révisé, ajoutez une nouvelle version nommée 2.0 à la spec de modèle existante. Les utilisateurs peuvent choisir l’une ou l’autre version à déployer.

  1. Créez une nouvelle version du spec de modèle.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "c:\Templates\azuredeploy.json"
    
  2. 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
    
  3. Déployez cette version. Indiquez le préfixe du nom du compte de stockage.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -namePrefix "demoaccount"
    

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.

  1. Dans le portail Azure, sélectionnez Groupe de ressources dans le menu de gauche.

  2. Entrez le nom du groupe de ressources (templateSpecRG et storageRG) dans le champ Filtrer par nom.

  3. Sélectionnez le nom du groupe de ressources.

  4. Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.

Étapes suivantes

Pour découvrir la création d’une spec de modèle incluant des modèles liés, consultez Créer une spec de modèle d’un modèle lié.