Szybki start: tworzenie i wdrażanie specyfikacji szablonu za pomocą Bicep

W tym przewodniku Szybki start opisano sposób tworzenia i wdrażania specyfikacji szablonu przy użyciu pliku Bicep. Specyfikacja szablonu jest wdrażana w grupie zasobów, aby osoby w organizacji mogły wdrażać zasoby na platformie Microsoft Azure. Specyfikacje szablonów umożliwiają udostępnianie szablonów wdrażania bez konieczności zapewniania użytkownikom dostępu do zmiany pliku Bicep. Ten przykład specyfikacji szablonu używa pliku Bicep do wdrożenia konta magazynu.

Podczas tworzenia specyfikacji szablonu plik Bicep jest transpilowany w formacie JavaScript Object Notation (JSON). Specyfikacja szablonu używa formatu JSON do wdrażania zasobów platformy Azure. Obecnie nie można użyć witryny Microsoft Azure Portal do zaimportowania pliku Bicep i utworzenia zasobu specyfikacji szablonu.

Wymagania wstępne

Tworzenie pliku Bicep

Specyfikację szablonu można utworzyć na podstawie lokalnego pliku Bicep. Skopiuj poniższy przykład i zapisz go na komputerze jako main.bicep. W przykładach użyto ścieżki C:\templates\main.bicep. Możesz użyć innej ścieżki, ale musisz zmienić polecenia.

Poniższy plik Bicep jest używany na kartach programu PowerShell i interfejsu wiersza polecenia . Karta plik Bicep używa innego szablonu, który łączy kod Bicep i JSON w celu utworzenia i wdrożenia specyfikacji szablonu.

@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

Tworzenie specyfikacji szablonu

Specyfikacja szablonu to typ zasobu o nazwie Microsoft.Resources/templateSpecs. Aby utworzyć specyfikację szablonu, użyj interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub pliku Bicep.

W tym przykładzie użyto nazwy templateSpecRGgrupy zasobów . Możesz użyć innej nazwy, ale musisz zmienić polecenia.

  1. Utwórz nową grupę zasobów, aby zawierała specyfikację szablonu.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Utwórz specyfikację szablonu w tej grupie zasobów. Nadaj nowemu szablonowi nazwę storageSpec.

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

Wdrażanie specyfikacji szablonu

Użyj specyfikacji szablonu, aby wdrożyć konto magazynu. W tym przykładzie użyto nazwy storageRGgrupy zasobów . Możesz użyć innej nazwy, ale musisz zmienić polecenia.

  1. Utwórz grupę zasobów zawierającą nowe konto magazynu.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Pobierz identyfikator zasobu specyfikacji szablonu.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Wdróż specyfikację szablonu.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Należy podać parametry dokładnie tak, jak w przypadku wdrożenia pliku Bicep. Ponownie wdróż specyfikację szablonu przy użyciu parametru dla typu konta magazynu.

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

Udzielanie dostępu

Jeśli chcesz zezwolić innym użytkownikom w organizacji na wdrożenie specyfikacji szablonu, musisz udzielić im dostępu do odczytu. Rolę Czytelnik można przypisać do grupy Microsoft Entra dla grupy zasobów zawierającej specyfikacje szablonu, które chcesz udostępnić. Aby uzyskać więcej informacji, zobacz Samouczek: udzielanie grupie dostępu do zasobów platformy Azure przy użyciu programu Azure PowerShell.

Aktualizowanie pliku Bicep

Po utworzeniu specyfikacji szablonu podjęto decyzję o zaktualizowaniu pliku Bicep. Aby kontynuować pracę z przykładami na kartach programu PowerShell lub interfejsu wiersza polecenia , skopiuj przykład i zastąp plik main.bicep .

Parametr storageNamePrefix określa wartość prefiksu dla nazwy konta magazynu. Zmienna storageAccountName łączy prefiks z unikatowym ciągiem.

@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

Aktualizowanie wersji specyfikacji szablonu

Zamiast tworzyć nową specyfikację szablonu dla poprawionego szablonu, dodaj nową wersję o nazwie 2.0 do istniejącej specyfikacji szablonu. Użytkownicy mogą wybrać wdrożenie jednej z tych wersji.

  1. Utwórz nową wersję specyfikacji szablonu.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Aby wdrożyć nową wersję, pobierz identyfikator zasobu dla 2.0 wersji.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Wdróż nową wersję i użyj elementu , storageNamePrefix aby określić prefiks nazwy konta magazynu.

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

Czyszczenie zasobów

Aby wyczyścić zasoby wdrożone w tym przewodniku Szybki start, usuń obie grupy zasobów. Grupa zasobów, specyfikacje szablonu i konta magazynu zostaną usunięte.

Użyj programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, aby usunąć grupy zasobów.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Następne kroki