Démarrage rapide : Créer et déployer un spec de modèle avec Bicep

Ce démarrage rapide décrit comment créer et déployer une spec de modèle avec un fichier Bicep. Une spec de modèle est déployée sur un groupe de ressources afin que les membres de votre organisation puissent déployer des ressources dans Microsoft Azure. Des specs de modèle vous permettent de partager des modèles de déploiement sans devoir accorder aux utilisateurs l’accès au fichier Bicep pour modifier celui-ci. Cet exemple de spec de modèle utilise un fichier Bicep pour déployer un compte de stockage.

Lorsque vous créez une spec de modèle, le fichier Bicep est transpilé en JSON (JavaScript Object Notation). La spec de modèle utilise JSON pour déployer des ressources Azure. Actuellement, vous ne pouvez pas utiliser le portail Azure pour importer un fichier Bicep et créer une ressource de spec de modèle.

Prérequis

Créer un fichier Bicep

Vous créez une spec de modèle à partir d’un fichier Bicep local. Copiez l’exemple suivant et enregistrez-le sur votre ordinateur sous main.bicep. Les exemples utilisent le chemin d’accès c:\templates\main.bicep. Vous pouvez utiliser un autre chemin d’accès, mais vous devez modifier les commandes.

Le fichier Bicep suivant est utilisé sous les onglets PowerShell et CLI. L’onglet Fichier Bicep utilise un autre modèle qui combine Bicep et JSON pour créer et déployer une spec de modèle.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

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 Azure CLI, Azure PowerShell ou un fichier Bicep.

Cet exemple utilise le nom de groupe de ressources templateSpecRG. Vous pouvez utiliser un autre nom, mais vous devrez modifier les commandes.

  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\main.bicep"
    

Déployer une spec de modèle

Utilisez la spec de modèle pour déployer un compte de stockage. Cet exemple utilise le nom de groupe de ressources storageRG. Vous pouvez utiliser un autre nom, mais vous devrez modifier les commandes.

  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 des paramètres exactement comme vous le feriez pour le déploiement d’un fichier Bicep. 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.

Créer un fichier Bicep

Une fois la spec de modèle créée, vous avez décidé de mettre à jour le fichier Bicep. Pour continuer avec les exemples sous les onglets PowerShell ou CLI, copiez l’exemple et remplacez votre fichier main.bicep.

Le paramètre storageNamePrefix spécifie une valeur de préfixe pour le nom du compte de stockage. La variable storageAccountName concatène le préfixe avec une chaîne unique.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

@maxLength(11)
@description('The storage account name prefix.')
param storageNamePrefix string = 'storage'

var storageAccountName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

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 de déployer la version de leur choix.

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

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  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 la nouvelle version et utilisez le storageNamePrefix pour spécifier un préfixe pour le nom du compte de stockage.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageNamePrefix "demo"
    

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. Le groupe de ressources, les specs de modèle et les comptes de stockage seront supprimés.

Pour supprimer les groupes de ressources, utilisez Azure PowerShell ou Azure CLI.

Remove-AzResourceGroup -Name "templateSpecRG"

Remove-AzResourceGroup -Name "storageRG"
az group delete --name templateSpecRG

az group delete --name storageRG

Étapes suivantes