Guida introduttiva: Creare e distribuire una specifica di modello con Bicep

Questa guida introduttiva descrive come creare e distribuire una specifica di modello con un file Bicep. Una specifica di modello viene distribuita in un gruppo di risorse in modo che gli utenti dell'organizzazione possano distribuire le risorse in Microsoft Azure. Le specifiche di modello consentono di condividere i modelli di distribuzione senza dover concedere agli utenti l'accesso per modificare il file Bicep. Questo esempio di specifica di modello usa un file Bicep per distribuire un account di archiviazione.

Quando si crea una specifica di modello, il file Bicep viene traspilato in JavaScript Object Notation (JSON). La specifica di modello usa JSON per distribuire le risorse di Azure. Attualmente, non è possibile usare Microsoft portale di Azure per importare un file Bicep e creare una risorsa specifica di modello.

Prerequisiti

Creare un file Bicep

Creare una specifica di modello da un file Bicep locale. Copiare l'esempio seguente e salvarlo nel computer come main.bicep. Gli esempi usano il percorso C:\templates\main.bicep. È possibile usare un percorso diverso, ma sarà necessario modificare i comandi.

Il file Bicep seguente viene usato nelle schede di PowerShell e dell'interfaccia della riga di comando. La scheda File Bicep usa un modello diverso che combina Bicep e JSON per creare e distribuire una specifica di modello.

@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@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

Creare la specifica di modello

La specifica di modello è un tipo di risorsa denominato Microsoft.Resources/templateSpecs. Per creare una specifica di modello, usare l'interfaccia della riga di comando di Azure, Azure PowerShell o un file Bicep.

In questo esempio viene usato il nome templateSpecRGdel gruppo di risorse . È possibile usare un nome diverso, ma sarà necessario modificare i comandi.

  1. Creare un nuovo gruppo di risorse per contenere la specifica di modello.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Creare la specifica di modello in quel gruppo di risorse. Assegnare alla nuova specifica di modello il nome storageSpec.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    

Distribuire la specifica di modello

Usare la specifica di modello per distribuire un account di archiviazione. In questo esempio viene usato il nome storageRGdel gruppo di risorse . È possibile usare un nome diverso, ma sarà necessario modificare i comandi.

  1. Creare un gruppo di risorse per contenere il nuovo account di archiviazione.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Ottenere l'ID risorsa della specifica di modello.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Distribuire la specifica di modello.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Specificare i parametri esattamente come si farebbe per una distribuzione di file Bicep. Ridistribuire la specifica di modello con un parametro per il tipo di account di archiviazione.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

Concedi accesso

Se si vuole consentire ad altri utenti dell'organizzazione di distribuire la specifica di modello, è necessario concedere loro l'accesso in lettura. È possibile assegnare il ruolo Lettore a un gruppo di Microsoft Entra per il gruppo di risorse che contiene le specifiche di modello che si desidera condividere. Per altre informazioni, vedere Esercitazione: Concedere a un gruppo l'accesso alle risorse di Azure usando Azure PowerShell.

Aggiornare il file Bicep

Dopo aver creato la specifica di modello, si è deciso di aggiornare il file Bicep. Per continuare con gli esempi nelle schede di PowerShell o dell'interfaccia della riga di comando, copiare l'esempio e sostituire il file main.bicep.

Il parametro storageNamePrefix specifica un valore di prefisso per il nome dell'account di archiviazione. La storageAccountName variabile concatena il prefisso con una stringa univoca.

@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

Aggiornare la versione della specifica di modello

Anziché creare una nuova specifica di modello per il modello modificato, aggiungere una nuova versione denominata 2.0 alla specifica di modello esistente. Gli utenti possono scegliere di distribuire una delle due versioni.

  1. Creare una nuova versione della specifica di modello.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Per distribuire la nuova versione, ottenere l'ID della risorsa per la versione 2.0.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Distribuire la nuova versione e usare per storageNamePrefix specificare un prefisso per il nome dell'account di archiviazione.

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

Pulire le risorse

Per pulire le risorse distribuite in questa guida introduttiva, eliminare entrambi i gruppi di risorse. Verranno eliminati il gruppo di risorse, le specifiche del modello e gli account di archiviazione.

Usare Azure PowerShell o l'interfaccia della riga di comando di Azure per eliminare i gruppi di risorse.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Passaggi successivi