Общие сведения о структуре и синтаксисе файлов Bicep
Azure Bicep поставляется с собственным синтаксисом, и его легко понять и за ним легко следовать. Мы не рассмотрим синтаксис и структуру, но рассмотрим основные понятия, используя пример.
Пример файла Bicep .bicep
@minLength(3)
@maxLength(11)
param storagePrefix string
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
resource service 'fileServices' = {
name: 'default'
resource share 'shares' = {
name: 'exampleshare'
}
}
}
module webModule './webApp.bicep' = {
name: 'webDeploy'
params: {
skuName: 'S1'
location: location
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Размах
По умолчанию целевая область всех шаблонов задана для resourceGroup
, однако ее можно настроить явно. Как и другие допустимые значения, subscription
, managementGroup
и tenant
.
Параметры
Вы уже использовали параметры в предыдущем уроке. Они позволяют настраивать развертывание шаблона во время выполнения программы, задавая возможные значения для имен, расположений, префиксов и т. д.
Параметры также имеют типы, которые редакторы могут проверять, а также иметь значения по умолчанию, чтобы сделать их необязательными во время развертывания. Кроме того, вы можете увидеть, что они могут иметь правила проверки, чтобы сделать развертывание более надежным, предотвращая ввод недопустимых значений на этапе создания. Дополнительные сведения см., в разделе Параметры Bicep.
Переменные
Как и параметры, переменные играют роль в создании более надежного и читаемого шаблона. Любое сложное выражение может храниться в переменной и использоваться во всем шаблоне. При определении переменной тип выводится из значения.
В приведенном выше примере uniqueStorageName
используется для упрощения определения ресурсов. Дополнительные сведения см. в разделе Переменные в Bicep.
Ресурсы
Ключевое слово resource
используется, когда необходимо объявить ресурс в шаблонах. Объявление ресурса имеет символьное имя ресурса, которое можно использовать для ссылки на этот ресурс позже для определения подресурса или использования его свойств для неявной зависимости, такой как отношение "родительский-дочерний".
Существуют определенные свойства, которые являются общими для всех ресурсов, таких как location
, name
и properties
. Существуют свойства, относящиеся к ресурсам, которые можно использовать для настройки ценовой категории ресурсов, SKU
и т. д.
Вы можете определить подресурсы в ресурсе или за ее пределами, ссылаясь на родительский объект. В приведенном выше примере общий файловый ресурс определяется в ресурсе учетной записи хранения. Если цель заключалась в определении ресурса за ее пределами, вам потребуется изменить шаблон:
resource storage 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'examplestorage'
location: resourceGroup().location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource service 'Microsoft.Storage/storageAccounts/fileServices@2021-02-01' = {
name: 'default'
parent: storage
}
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2021-02-01' = {
name: 'exampleshare'
parent: service
}
См. объявление ресурса в Bicepдля получения дополнительных сведений.
Модули
Если вы хотите действительно повторно использовать шаблоны, вы не можете избежать использования модуля. Модули позволяют повторно использовать Bicep-файл в других файлах Bicep. В модуле вы определяете, что необходимо развернуть, и все необходимые параметры. Когда вы повторно используете его в другом файле, все, что нужно сделать, — это сослаться на файл и предоставить параметры. Остальным занимается Azure Bicep.
В приведенном выше примере используется модуль, который предположительно развертывает App Service
. Дополнительные сведения см. в разделе Using Modules in Bicep.
Выходы
Выходные данные можно использовать для передачи значений из развертывания во внешнюю среду, будь то в конвейере CI/CD, локальном терминале или Cloud Shell. Это позволит получить доступ к такому значению, как конечная точка хранилища или URL-адрес приложения после завершения развертывания.
Все, что вам нужно, — это ключевое слово output
и свойство, к которое вы хотите получить доступ:
output storageEndpoint endpoints = stg.properties.primaryEndpoints
Дополнительные сведения см. в разделе "Выходные данные " в Bicep.
Другие функции
Существует множество других функций, доступных в файле Bicep, таких как циклы, условное развертывание, многострочный набор строк, ссылка на существующий облачный ресурс и многое другое. На самом деле любая допустимая функция в шаблоне ARM также допустима в файле Bicep.
Дальнейшие действия
В следующем уроке вы узнаете, как использовать Bicep в Azure Pipeline.