Condividi tramite


Avvio rapido: Creare e distribuire una specifica di modello con Bicep

Questo avvio rapido 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 sottoposto a transpile in JavaScript Object Notation (JSON). La specifica di modello usa JSON per distribuire le risorse di Azure. Attualmente, non è possibile usare il portale di Microsoft Azure per importare un file Bicep e creare una risorsa specifica di modello.

Prerequisiti

Creare un file Bicep

Per creare una specifica di modello si userà un file Bicep. 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 è necessario modificare i comandi.

Il file Bicep seguente viene usato nelle schede PowerShell e 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@2023-04-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 del gruppo di risorse templateSpecRG. È possibile usare un nome diverso, ma è 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 del gruppo di risorse storageRG. È possibile usare un nome diverso, ma è 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 usando la stessa procedura adottata per la 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 Microsoft Entra per il gruppo di risorse che contiene le specifiche di modello da condividere. Per ulteriori informazioni, vedere Esercitazione: Concedere l'accesso alle risorse di Azure a un gruppo 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 PowerShell o 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 variabile storageAccountName 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

Invece di 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 qualsiasi delle versioni.

  1. Creare una nuova versione per la 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 questo argomento di avvio rapido, 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