Краткое руководство. Создание и развертывание спецификации шаблона с помощью файла Bicep

В этом кратком руководстве описывается создание и развертывание спецификации шаблона с помощью файла Bicep. Спецификация шаблона развертывается в группу ресурсов, чтобы пользователи в организации могли развертывать ресурсы в Microsoft Azure. Спецификации шаблонов позволяют предоставлять общий доступ к шаблонам развертывания без необходимости предоставления пользователям доступа на изменение файла Bicep. В этом примере спецификации шаблона файл Bicep используется для развертывания учетной записи хранения.

При создании спецификации шаблона файл Bicep транскомпилируется в нотацию объектов JavaScript (JSON). Спецификация шаблона использует JSON для развертывания ресурсов Azure. В настоящее время вы не можете использовать портал Azure для импорта файла Bicep и создания ресурса спецификации шаблона.

Необходимые компоненты

Создание файла Bicep

Спецификация шаблона создается из локального файла Bicep. Скопируйте следующий пример и сохраните его на компьютере как main.bicep. В примерах используется путь C:\templates\main.bicep. Можно использовать другой путь, но потребуется изменить команды.

Следующий файл Bicep используется на вкладках PowerShell и CLI. На вкладке Файл Bicep используется другой шаблон, объединяющий Bicep и JSON для создания и развертывания спецификации шаблона.

@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

Создание спецификации шаблона

Спецификация шаблона — это тип ресурсов с именем Microsoft.Resources/templateSpecs. Чтобы создать спецификацию шаблона, используйте Azure CLI, Azure PowerShell или файл Bicep.

В этом примере используется имя группы ресурсов templateSpecRG. Можно использовать другое имя, но потребуется изменить команды.

  1. Создайте новую группу ресурсов, которая будет содержать спецификацию шаблона.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Создайте спецификацию шаблона в этой группе ресурсов. Задайте для новой спецификации шаблона имя storageSpec.

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

Развертывание спецификации шаблона

Используйте спецификацию шаблона для развертывания учетной записи хранения. В этом примере используется имя группы ресурсов storageRG. Можно использовать другое имя, но потребуется изменить команды.

  1. Создайте группу ресурсов, которая будет содержать новую учетную запись хранения.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Получите ИД ресурса спецификации шаблона.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Разверните спецификацию шаблона.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Параметры указываются точно так же, как и при развертывании файла Bicep. Повторно разверните спецификацию шаблона с параметром для типа учетной записи хранения.

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

Предоставление доступа

Если вы хотите позволить другим пользователям в организации развертывать спецификацию шаблона, необходимо предоставить им доступ на чтение. Роль читателя можно назначить группе Microsoft Entra для группы ресурсов, содержащей спецификации шаблонов, к которым требуется предоставить общий доступ. Дополнительные сведения см. в статье Учебник. Предоставление доступа группам к ресурсам Azure с помощью Azure PowerShell.

Обновление файла Bicep

После создания спецификации шаблона вы решили обновить файл Bicep. Чтобы продолжить работу с примерами на вкладках PowerShell или CLI, скопируйте пример и замените файл main.bicep.

Параметр storageNamePrefix задает значение префикса для имени учетной записи хранения. Переменная storageAccountName объединяет префикс с уникальной строкой.

@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

Обновление версии спецификации шаблона

Вместо создания спецификации шаблона для измененного шаблона добавьте новую версию с именем 2.0 в имеющуюся спецификацию шаблона. Пользователи могут выбрать любую версию для развертывания.

  1. Создайте новую версию спецификации шаблона.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Чтобы развернуть новую версию, получите идентификатор ресурса для версии 2.0.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Разверните новую версию и используйте storageNamePrefix, чтобы указать префикс для имени учетной записи хранения.

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

Очистка ресурсов

Чтобы очистить ресурсы, развернутые в этом кратком руководстве, удалите обе созданные группы ресурсов. Будут удалены группа ресурсов, спецификации шаблонов и учетные записи хранения.

Удалите группы ресурсов с помощью Azure PowerShell или Azure CLI.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Следующие шаги