Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как задать область с помощью 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 см. в следующих статье:
- Как использовать шаблоны развертывания Azure Resource Manager (ARM) с Azure CLI
- Развертывание ресурсов с помощью шаблонов ARM и Azure PowerShell
- Развертывание шаблонов ARM из Cloud Shell
Области развертывания
В Bicep-файле все ресурсы, объявленные ключевым resource
словом, должны быть развернуты на том же уровне, что и развертывание. Для развертывания группы ресурсов это означает, что все resource
объявления в файле Bicep должны быть развернуты в той же группе ресурсов или в качестве дочернего или расширенного ресурса ресурса в той же группе ресурсов, что и развертывание.
Однако это ограничение не применяется к existing
ресурсам. Вы можете ссылаться на существующие ресурсы в другой области, отличной от развертывания.
Чтобы развернуть ресурсы в нескольких областях в одном развертывании, используйте модули. Развертывание модуля активирует вложенное развертывание, что позволяет ориентироваться на разные области. Пользователь, развертывающий родительский файл Bicep, должен иметь необходимые разрешения для запуска развертываний в этих областях.
Вы можете развернуть ресурс из Bicep-файла, ориентированного на группу ресурсов, на следующих уровнях:
- Та же группа ресурсов
- Другие группы ресурсов в той же подписке
- Другие группы ресурсов в других подписках
- Подписка
- Клиент
Область охвата для целевой группы ресурсов
Чтобы развернуть ресурсы в целевой группе ресурсов, их нужно добавить в файл 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)
}
Пример шаблона находится в разделе Развертывание в несколько групп ресурсов.
Область действия для подписки
To deploy resources to a subscription, add a module. Use the [
Свойство области подпискиfunction](bicep-functions-scope.md#subscription) to set its
.
Чтобы развернуть в текущей подписке, используйте 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)
}
Область для клиента
Чтобы создать ресурсы у арендатора, добавьте модуль. Используйте функцию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".
Следующие шаги
Сведения о других областях приведены в следующих статьях: