Поделиться через


Объявление ресурсов в Bicep

Эта статья описывает синтаксис, который используется для добавления ресурса в файл Bicep. В файле Bicep ограничено 800 ресурсов. Дополнительные сведения см. в разделе Ограничения шаблона.

Определение ресурсов

Добавьте объявление ресурса с помощью ключевого слова resource. Задайте символьное имя ресурса. Символьное имя не совпадает с именем ресурса. Символьное имя используется, чтобы было ссылаться на ресурс в других частях файла Bicep.

@<decorator>(<argument>)
resource <symbolic-name> '<full-type-name>@<api-version>' = {
  <resource-properties>
}

Таким образом, объявление для учетной записи хранения может начинаться с:

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  ...
}

В символьных именах учитывается регистр. Они должны могут содержать буквы, цифры и символы подчеркивания (_). Они не могут начинаться с цифры. Имя ресурса не может совпадать с именем параметра, переменной или модуля.

Доступные версии и типы ресурсов см. в справочнике по ресурсам Bicep. Bicep не поддерживает apiProfile, доступный в JSON шаблонов Azure Resource Manager (ARM). Вы также можете определить ресурсы поставщика расширяемости Bicep. Дополнительные сведения см. в разделе Bicep расширяемости поставщика Kubernetes.

Чтобы выполнить условное развертывание ресурса, используйте синтаксис if. Дополнительные сведения см. в разделе Условное развертывание в Bicep.

resource <symbolic-name> '<full-type-name>@<api-version>' = if (condition) {
  <resource-properties>
}

Чтобы развернуть несколько экземпляров ресурса, используйте синтаксис for. Можно указать, следует ли развертывать экземпляры последовательно или параллельно, с помощью декоратора batchSize. Дополнительные сведения о циклах см. в статье Интерактивные циклы в Bicep.

@batchSize(int) // optional decorator for serial deployment
resource <symbolic-name> '<full-type-name>@<api-version>' = [for <item> in <collection>: {
  <properties-to-repeat>
}]

Для создания массива также можно использовать синтаксис for для свойств ресурса.

resource <symbolic-name> '<full-type-name>@<api-version>' = {
  properties: {
    <array-property>: [for <item> in <collection>: <value-to-repeat>]
  }
}

Использование декораторов

Декораторы записываются в формате @expression и помещаются над объявлениями ресурсов. В следующей таблице показаны доступные декораторы для ресурсов.

Декоратор Аргумент Description
batchSize ничего Настройте экземпляры для последовательного развертывания.
описание строка Укажите описания ресурса.

Декораторы находятся в пространстве имен sys. Если вам важно, чтобы декоратор не путался с другими элементами с таким же именем, добавьте к нему префикс sys. Например, если в файле Bicep есть параметр с именем description, при использовании оформителя description необходимо добавить к имени пространство имен sys.

BatchSize

Можно применить @batchSize() только к определению ресурса или модуля, использующего for выражение.

По умолчанию ресурсы развертываются параллельно. При добавлении декоратора batchSize(int) экземпляры развертываются последовательно.

@batchSize(3)
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Дополнительные сведения см. в статье Развертывание в пакетах.

Description

Чтобы добавить объяснение, добавьте описание в объявления ресурсов. Например:

@description('Create a number of storage accounts')
resource storageAccountResources 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storageName in storageAccounts: {
  ...
}]

Текст в формате Markdown можно использовать для текста описания.

Имя ресурса

У каждого ресурса есть имя. При задании имени ресурса обратите внимание на правила и ограничения для имен ресурсов.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  ...
}

Как правило, имя назначается параметру, что позволяет передавать другие значения во время развертывания.

@minLength(3)
@maxLength(24)
param storageAccountName string

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  ...
}

Расположение ресурса

Для многих ресурсов требуется расположение. Определить, требуется ли ресурсу расположение, можно с помощью технологии IntelliSense или справочника по шаблону. В следующем примере мы добавляем параметр location, используемый для учетной записи хранения.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  ...
}

Как правило, расположение назначается параметру, что позволяет выполнять развертывание в различных расположениях.

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: location
  ...
}

Различные типы ресурсов поддерживаются в разных расположениях. Чтобы получить сведения о поддерживаемых расположениях для службы Azure, см. раздел Доступность продуктов по регионам. Чтобы получить поддерживаемые расположения для типа ресурса, используйте Azure PowerShell или Azure CLI.

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
  | Where-Object ResourceTypeName -eq batchAccounts).Locations

Теги ресурсов

Вы можете добавлять теги к ресурсу во время развертывания. Теги помогают логически упорядочивать развернутые ресурсы. Примеры различных способов указания тегов см. в разделе Теги шаблонов ARM.

Управляемые удостоверения для ресурсов

Некоторые ресурсы поддерживают управляемые удостоверения для ресурсов Azure. У них на корневом уровне объявления ресурса есть объект Identity.

Вы можете использовать удостоверения, назначенные системой или пользователем.

В следующем примере показано, как настроить назначенное системой удостоверение для кластера Службы Azure Kubernetes.

resource aks 'Microsoft.ContainerService/managedClusters@2024-02-01' = {
  name: clusterName
  location: location
  tags: tags
  identity: {
    type: 'SystemAssigned'
  }

В следующем примере показано, как настроить назначаемое пользователем удостоверение для виртуальной машины.

param userAssignedIdentity string

resource vm 'Microsoft.Compute/virtualMachines@2024-03-01' = {
  name: vmName
  location: location
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity}': {}
    }
  }

Свойства конкретного ресурса

Приведенные выше свойства являются общими для большинства типов ресурсов. После задания этих значений необходимо задать свойства, относящиеся к типу ресурсов, которые вы развертываете.

Используйте IntelliSense или справочник по ресурсам Bicep, чтобы определить, какие свойства доступны и какие из них являются обязательными. В следующем примере задаются оставшиеся свойства учетной записи хранения.

resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'examplestorage'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

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