Развертывание группы ресурсов с помощью файлов Bicep
В этой статье показано, как задать область с помощью Bicep при развертывании в группе ресурсов.
Поддерживаемые ресурсы
Большинство ресурсов можно развернуть в группе ресурсов. Список доступных ресурсов находится в справочнике по шаблонам ARM.
Область — набор
По умолчанию файл Bicep ограничивается группой ресурсов. Если вы хотите задать область явным образом, используйте следующую команду:
targetScope = 'resourceGroup'
Но установка целевой области в группе ресурсов не требуется, так как эта область используется по умолчанию.
Команды развертывания
Для развертывания в группе ресурсов используются команды развертывания группы ресурсов.
Для Azure CLI используется команда az deployment group create. В следующем примере выполняется развертывание шаблона для создания группы ресурсов. Группа ресурсов, указанная в параметре --resource-group
, является целевой группой ресурсов.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Более подробные сведения о командах и параметрах развертывания для развертывания шаблонов ARM приведены в следующих статьях:
- Развертывание ресурсов с помощью шаблонов ARM и Azure CLI
- Развертывание ресурсов с помощью шаблонов ARM и Azure PowerShell
- Развертывание шаблонов ARM из Cloud Shell
Области развертывания
При развертывании в группе ресурсов можно развернуть ресурсы:
- целевая группа ресурсов для развертывания;
- другие группы ресурсов в той же подписке или других подписках;
- любую подписку в клиенте;
- клиенте для группы ресурсов.
Ресурс расширения можно ограничить целевым объектом, который отличается от целевого объекта развертывания.
Пользователь, развертывающий шаблон, должен иметь доступ к указанной области.
В этом разделе показано, как указать различные области. Такие различные области можно объединить в один шаблон.
Область для целевой группы ресурсов
Чтобы развернуть ресурсы в целевой группе ресурсов, их нужно добавить в файл Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Пример шаблона находится в разделе Развертывание в целевую группу ресурсов.
Использование другой группы ресурсов
Чтобы развернуть ресурсы в группе ресурсов, которая не является целевой, добавьте модуль. Используйте функцию resourceGroup, чтобы задать свойство scope
для этого модуля.
Если группа ресурсов находится в другой подписке, укажите идентификатор подписки и имя группы ресурсов. Если группа ресурсов находится в той же подписке, что и текущее развертывание, укажите только имя группы ресурсов. Если вы не укажете подписку в функции resourceGroup, будет использоваться текущая подписка.
В примере ниже показан модуль, предназначенный для группы ресурсов в другой подписке.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
В примере ниже показан модуль, предназначенный для группы ресурсов в той же подписке.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Пример шаблона находится в разделе Развертывание в несколько групп ресурсов.
Область действия для подписки
Чтобы развернуть ресурсы в подписке, добавьте модуль. Используйте функцию subscription, чтобы задать его свойство scope
.
Для развертывания в текущей подписке используйте функцию subscription без параметра.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Чтобы выполнить развертывание в другой подписке, укажите идентификатор подписки в качестве параметра в функции subscription.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Пример шаблона см. в разделе "Создание группы ресурсов с помощью Bicep".
Область для клиента
Чтобы создать ресурсы в клиенте, добавьте модуль. Используйте функцию tenant, чтобы задать его свойство scope
.
Пользователь, развертывающий шаблон, должен иметь необходимый доступ для развертывания в клиенте.
Следующий пример включает модуль, развернутый в клиенте.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Вместо использования модуля можно задать область tenant()
для некоторых типов ресурсов. В следующем примере выполняется развертывание группы управления в клиенте.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = mgName
Дополнительные сведения находятся в Обзоре группы управления.
Развертывание в целевую группу ресурсов
Чтобы развернуть ресурсы в целевую группу ресурсов, определите эти ресурсы в разделе шаблона resources
. Следующий шаблон создает учетную запись хранения в группе ресурсов, указанной в операции развертывания.
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Развертывание в нескольких группах ресурсов
Можно выполнить развертывание в несколько групп ресурсов с использованием одного файла Bicep.
Примечание.
В рамках одного развертывания можно выполнять развертывание в 800 группах ресурсов. Как правило, это ограничение означает, что для развертывания используется одна группа ресурсов из родительского шаблона и не более 799 групп ресурсов из вложенных или связанных развертываний. Но если родительский шаблон содержит только вложенные или связанные шаблоны и сам не развертывает ресурсы, то вложенные или связанные развертывания могут включать до 800 групп ресурсов.
Следующий пример создает две учетные записи хранения. Первая учетная запись хранения развертывается в той группе ресурсов, которая указана в операции развертывания. Вторая учетная запись хранения развертывается в группе ресурсов, которая указана в параметрах secondResourceGroup
и secondSubscriptionID
:
@maxLength(11)
param storagePrefix string
param firstStorageLocation string = resourceGroup().location
param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string
var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'
module firstStorageAcct 'storage.bicep' = {
name: 'storageModule1'
params: {
storageLocation: firstStorageLocation
storageName: firstStorageName
}
}
module secondStorageAcct 'storage.bicep' = {
name: 'storageModule2'
scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
params: {
storageLocation: secondStorageLocation
storageName: secondStorageName
}
}
Оба модуля используют один и тот же файл Bicep с именем storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Создать группу ресурсов
Сведения о создании групп ресурсов см. в статье "Создание группы ресурсов с помощью Bicep".
Следующие шаги
Сведения о других областях приведены в следующих статьях: