Объявление ресурсов в 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'
}
}
Следующие шаги
- Дополнительные сведения об условном развертывании ресурса см. в разделе Условное развертывание в Bicep.
- Чтобы указать ссылку на существующий ресурс, воспользуйтесь статьей Существующие ресурсы в Bicep.
- Дополнительные сведения о том, как определяется порядок развертывания, см. в статье Зависимости ресурсов в Bicep.