Объявление ресурсов в 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'
  }
}

Дальнейшие действия