Snabbstart: Skapa och distribuera en mallspecifikation med Bicep

Den här snabbstarten beskriver hur du skapar och distribuerar en mallspecifikation med en Bicep-fil. En mallspecifikation distribueras till en resursgrupp så att personer i din organisation kan distribuera resurser i Microsoft Azure. Med mallspecifikationer kan du dela distributionsmallar utan att behöva ge användarna åtkomst till att ändra Bicep-filen. Det här mallspecifikationsexemplet använder en Bicep-fil för att distribuera ett lagringskonto.

När du skapar en mallspecifikation överförs Bicep-filen till JavaScript Object Notation (JSON). Mallspecifikationen använder JSON för att distribuera Azure-resurser. För närvarande kan du inte använda Microsoft Azure-portalen för att importera en Bicep-fil och skapa en mallspecifikationsresurs.

Förutsättningar

Skapa Bicep-fil

Du skapar en mallspecifikation från en lokal Bicep-fil. Kopiera följande exempel och spara det på datorn som main.bicep. I exemplen används sökvägen C:\templates\main.bicep. Du kan använda en annan sökväg, men du måste ändra kommandona.

Följande Bicep-fil används på flikarna PowerShell och CLI . Bicep-filfliken använder en annan mall som kombinerar Bicep och JSON för att skapa och distribuera en mallspecifikation.

@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

Skapa mallspecifikation

Mallspecifikationen är en resurstyp med namnet Microsoft.Resources/templateSpecs. Om du vill skapa en mallspecifikation använder du Azure CLI, Azure PowerShell eller en Bicep-fil.

I det här exemplet används resursgruppens namn templateSpecRG. Du kan använda ett annat namn, men du måste ändra kommandona.

  1. Skapa en ny resursgrupp som ska innehålla mallspecifikationen.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Skapa mallspecifikationen i resursgruppen. Ge den nya mallspecifikationen namnet storageSpec.

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

Distribuera mallspecifikation

Använd mallspecifikationen för att distribuera ett lagringskonto. I det här exemplet används resursgruppens namn storageRG. Du kan använda ett annat namn, men du måste ändra kommandona.

  1. Skapa en resursgrupp som ska innehålla det nya lagringskontot.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Hämta resurs-ID för mallspecifikationen.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Distribuera mallspecifikationen.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Du anger parametrar precis som för en Bicep-fildistribution. Distribuera om mallspecifikationen med en parameter för lagringskontotypen.

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

Bevilja åtkomst

Om du vill låta andra användare i din organisation distribuera mallspecifikationen måste du ge dem läsbehörighet. Du kan tilldela rollen Läsare till en Microsoft Entra-grupp för resursgruppen som innehåller mallspecifikationer som du vill dela. Mer information finns i Självstudie: Bevilja en grupp åtkomst till Azure-resurser med hjälp av Azure PowerShell.

Uppdatera Bicep-fil

När mallspecifikationen skapades bestämde du dig för att uppdatera Bicep-filen. Om du vill fortsätta med exemplen på PowerShell - eller CLI-flikarna kopierar du exemplet och ersätter filen main.bicep .

Parametern storageNamePrefix anger ett prefixvärde för lagringskontots namn. Variabeln storageAccountName sammanfogar prefixet med en unik sträng.

@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

Uppdatera mallspecifikationsversion

I stället för att skapa en ny mallspecifikation för den ändrade mallen lägger du till en ny version med namnet 2.0 i den befintliga mallspecifikationen. Användarna kan välja att distribuera någon av versionerna.

  1. Skapa en ny version av mallspecifikationen.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Om du vill distribuera den nya versionen hämtar du resurs-ID:t för 2.0 versionen.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Distribuera den nya versionen och använd storageNamePrefix för att ange ett prefix för lagringskontots namn.

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

Rensa resurser

Om du vill rensa de resurser som du distribuerade i den här snabbstarten tar du bort båda resursgrupperna. Resursgruppen, mallspecifikationerna och lagringskontona tas bort.

Använd Azure PowerShell eller Azure CLI för att ta bort resursgrupperna.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Nästa steg