Объявление ресурсов в Bicep
Эта статья описывает синтаксис, который используется для добавления ресурса в файл Bicep. В файле Bicep доступно не более 800 ресурсов. Дополнительные сведения см. в разделе Ограничения шаблона.
Объявление
Добавьте объявление ресурса с помощью ключевого слова resource
. Задайте символьное имя ресурса. Символьное имя не совпадает с именем ресурса. Символьное имя используется, чтобы было ссылаться на ресурс в других частях файла Bicep.
resource <symbolic-name> '<full-type-name>@<api-version>' = {
<resource-properties>
}
Таким образом, объявление для учетной записи хранения может начинаться с:
resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
...
}
В символьных именах учитывается регистр. Они должны могут содержать буквы, цифры и символы подчеркивания (_
). Они не могут начинаться с цифры. Имя ресурса не может совпадать с именем параметра, переменной или модуля.
Доступные версии и типы ресурсов см. в справочнике по ресурсам Bicep. Bicep не поддерживает apiProfile
, доступный в JSON шаблонов Azure Resource Manager (ARM). Вы также можете определить ресурсы поставщика расширяемости Bicep. Дополнительные сведения см. в разделе Поставщик Kubernetes расширяемости Bicep.
Чтобы выполнить условное развертывание ресурса, используйте синтаксис 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>]
}
}
Имя ресурса
У каждого ресурса есть имя. При задании имени ресурса обратите внимание на правила и ограничения для имен ресурсов.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
...
}
Как правило, имя назначается параметру, что позволяет передавать другие значения во время развертывания.
@minLength(3)
@maxLength(24)
param storageAccountName string
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: storageAccountName
...
}
Расположение
Для многих ресурсов требуется расположение. Определить, требуется ли ресурсу расположение, можно с помощью технологии IntelliSense или справочника по шаблону. В следующем примере мы добавляем параметр location, используемый для учетной записи хранения.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: 'eastus'
...
}
Как правило, расположение назначается параметру, что позволяет выполнять развертывание в различных расположениях.
param location string = resourceGroup().location
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: location
...
}
Различные типы ресурсов поддерживаются в разных расположениях. Чтобы получить сведения о поддерживаемых расположениях для службы Azure, см. раздел Доступность продуктов по регионам. Чтобы получить поддерживаемые расположения для типа ресурса, используйте Azure PowerShell или Azure CLI.
((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes `
| Where-Object ResourceTypeName -eq batchAccounts).Locations
Теги
Вы можете добавлять теги к ресурсу во время развертывания. Теги помогают логически упорядочивать развернутые ресурсы. Примеры различных способов указания тегов см. в разделе Теги шаблонов ARM.
Управляемые удостоверения для ресурсов Azure
Некоторые ресурсы поддерживают управляемые удостоверения для ресурсов Azure. У них на корневом уровне объявления ресурса есть объект Identity.
Вы можете использовать удостоверения, назначенные системой или пользователем.
В следующем примере показано, как настроить назначенное системой удостоверение для кластера Службы Azure Kubernetes.
resource aks 'Microsoft.ContainerService/managedClusters@2020-09-01' = {
name: clusterName
location: location
tags: tags
identity: {
type: 'SystemAssigned'
}
В следующем примере показано, как настроить назначаемое пользователем удостоверение для виртуальной машины.
param userAssignedIdentity string
resource vm 'Microsoft.Compute/virtualMachines@2020-06-01' = {
name: vmName
location: location
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'${userAssignedIdentity}': {}
}
}
Свойства конкретного ресурса
Приведенные выше свойства являются общими для большинства типов ресурсов. После задания этих значений необходимо задать свойства, относящиеся к типу ресурсов, которые вы развертываете.
Используйте IntelliSense или справочник по ресурсам Bicep, чтобы определить, какие свойства доступны и какие из них являются обязательными. В следующем примере задаются оставшиеся свойства учетной записи хранения.
resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
name: 'examplestorage'
location: 'eastus'
sku: {
name: 'Standard_LRS'
tier: 'Standard'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
Дальнейшие действия
- Дополнительные сведения об условном развертывании ресурса см. в разделе Условное развертывание в Bicep.
- Чтобы указать ссылку на существующий ресурс, воспользуйтесь статьей Существующие ресурсы в Bicep.
- Дополнительные сведения о том, как определяется порядок развертывания, см. в статье Зависимости ресурсов в Bicep.