Функции для работы с областями в Bicep

В этой статье описаны функции Bicep для получения значений области.

managementGroup

managementGroup()

Возвращает объект со свойствами из группы управления в текущем развертывании.

managementGroup(identifier)

Возвращает объект, используемый для установки области в группу управления.

Пространство имен: az.

Remarks

managementGroup() можно использовать только для развертываний группы управления. Эта функция возвращает текущую группу управления для операции развертывания. Используется при получении объекта области или свойств текущей группы управления.

managementGroup(identifier) может использоваться для любой области развертывания, но только при получении объекта области. Вы не сможете получить свойства группы управления по идентификатору группы управления.

Параметры

Параметр Обязательно Тип Описание
идентификатор Нет строка Уникальный идентификатор группы управления, в которую выполняется развертывание. Не используйте отображаемое имя для группы управления. Если значение не указано, возвращается текущая группа управления.

Возвращаемое значение

Объект используется для установки свойства scope в модуле или типе ресурса расширения. Или объект со свойствами для текущей группы управления.

Пример группы управления

В следующем примере в качестве области для модуля устанавливается группа управления.

param managementGroupIdentifier string

module  'mgModule.bicep' = {
  name: 'deployToMG'
  scope: managementGroup(managementGroupIdentifier)
}

Следующий пример возвращает свойства текущей группы управления.

targetScope = 'managementGroup'

var mgInfo = managementGroup()

output mgResult object = mgInfo

Возвращается следующее:

"mgResult": {
  "type": "Object",
  "value": {
    "id": "/providers/Microsoft.Management/managementGroups/examplemg1",
    "name": "examplemg1",
    "properties": {
      "details": {
        "parent": {
          "displayName": "Tenant Root Group",
          "id": "/providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000",
          "name": "00000000-0000-0000-0000-000000000000"
        },
        "updatedBy": "00000000-0000-0000-0000-000000000000",
        "updatedTime": "2020-07-23T21:05:52.661306Z",
        "version": "1"
      },
      "displayName": "Example MG 1",
      "tenantId": "00000000-0000-0000-0000-000000000000"
    },
    "type": "/providers/Microsoft.Management/managementGroups"
  }
}

Следующий пример создает новую группу управления и применяет эту функцию для настройки родительской группы управления.

targetScope = 'managementGroup'

param mgName string = 'mg-${uniqueString(newGuid())}'

resource newMG 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {
    details: {
      parent: {
        id: managementGroup().id
      }
    }
  }
}

output newManagementGroup string = mgName

resourceGroup

resourceGroup()

Возвращает объект, который представляет текущую группу ресурсов.

resourceGroup(resourceGroupName)

И

resourceGroup(subscriptionId, resourceGroupName)

Возвращает объект, используемый для установки области в группе ресурсов.

Пространство имен: az.

Remarks

Функция resourceGroup имеет два различных способа применения. Первый — установка области в модуле или типе ресурса расширения. Второй — получение сведений о текущей группе ресурсов. Размещение функции определяет ее использование. При использовании для установки свойства scope она возвращает объект области.

resourceGroup() можно использовать для установки области или получения сведений о группе ресурсов.

resourceGroup(resourceGroupName) и resourceGroup(subscriptionId, resourceGroupName) можно использовать только для установки области.

Параметры

Параметр Обязательно Тип Описание
имя_группы_ресурсов Нет строка Имя группы ресурсов, в которую выполняется развертывание. Если значение не указано, возвращается текущая группа ресурсов.
subscriptionId Нет строка Уникальный идентификатор подписки, в которую выполняется развертывание. Если значение не указано, возвращается текущая подписка.

Возвращаемое значение

При использовании для установки области функция возвращает объект, допустимый для свойства scope в модуле или типе ресурса расширения.

При использовании для получения сведений о группе ресурсов функция возвращает следующий формат:

{
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
  "name": "{resourceGroupName}",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "{resourceGroupLocation}",
  "managedBy": "{identifier-of-managing-resource}",
  "tags": {
  },
  "properties": {
    "provisioningState": "{status}"
  }
}

Свойство managedBy возвращается только для групп ресурсов, которые содержат ресурсы, управляемые другой службой. Для управляемых приложений, Databricks и AKS значением этого свойства является идентификатор управляющего ресурса.

Пример группы ресурсов

В следующем примере областью модуля является группа ресурсов.

param resourceGroupName string

module exampleModule 'rgModule.bicep' = {
  name: 'exampleModule'
  scope: resourceGroup(resourceGroupName)
}

Следующий шаблон возвращает свойства группы ресурсов.

output resourceGroupOutput object = resourceGroup()

Он возвращает объект в следующем формате:

{
  "id": "/subscriptions/{subscription-id}/resourceGroups/examplegroup",
  "name": "examplegroup",
  "type":"Microsoft.Resources/resourceGroups",
  "location": "southcentralus",
  "properties": {
    "provisioningState": "Succeeded"
  }
}

Как правило, функция resourceGroup используется для создания ресурсов в одном расположении с группой ресурсов. В следующем примере расположение группы ресурсов используется в качестве значения параметра по умолчанию.

param location string = resourceGroup().location

Кроме того, функцию resourceGroup можно использовать для применения к ресурсу тегов из группы ресурсов. Дополнительные сведения см. в разделе Применение тегов из группы ресурсов.

Подписка

subscription()

Возвращает сведения о подписке для текущего развертывания.

subscription(subscriptionId)

Возвращает объект, используемый для установки подписки в качестве области.

Пространство имен: az.

Remarks

Функция подписки имеет два различных способа использования. Первый — установка области в модуле или типе ресурса расширения. Второй — получение сведений о текущей подписке. Размещение функции определяет ее использование. При использовании для установки свойства scope она возвращает объект области.

subscription(subscriptionId) можно использовать только для установки области.

subscription() можно использовать для установки области или получения сведений о подписке.

Параметры

Параметр Обязательно Тип Описание
subscriptionId Нет строка Уникальный идентификатор подписки, в которую выполняется развертывание. Если значение не указано, возвращается текущая подписка.

Возвращаемое значение

При использовании для установки области функция возвращает объект, допустимый для свойства scope в модуле или типе ресурса расширения.

При использовании для получения сведений о подписке функция возвращает следующий формат:

{
  "id": "/subscriptions/{subscription-id}",
  "subscriptionId": "{subscription-id}",
  "tenantId": "{tenant-id}",
  "displayName": "{name-of-subscription}"
}

Пример подписки

В следующем примере областью модуля является подписка.

module exampleModule 'subModule.bicep' = {
  name: 'deployToSub'
  scope: subscription()
}

В следующем примере возвращаются сведения о подписке.

output subscriptionOutput object = subscription()

tenant

tenant()

Возвращает объект, используемый для установки клиента в качестве области.

либо

Возвращает клиент пользователя.

Пространство имен: az.

Remarks

tenant() может использоваться для любой области развертывания. Свойство всегда возвращает текущий клиент. С помощью этой функции можно настроить область ресурса или получить свойства текущего клиента.

Возвращаемое значение

Объект используется для установки свойства scope в модуле или типе ресурса расширения. Или объект со свойствами текущего клиента.

Пример клиента

Следующий пример показывает модуль, развернутый в клиенте.

module exampleModule 'tenantModule.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

Следующий пример возвращает свойства клиента.

var tenantInfo = tenant()

output tenantResult object = tenantInfo

Возвращается следующее:

"tenantResult": {
  "type": "Object",
  "value": {
    "countryCode": "US",
    "displayName": "Contoso",
    "id": "/tenants/00000000-0000-0000-0000-000000000000",
    "tenantId": "00000000-0000-0000-0000-000000000000"
  }
}

Для некоторых ресурсов требуется указать в свойстве идентификатор арендатора. Идентификатор арендатора можно не передавать в качестве параметра, и извлечь с помощью функции tenant.

resource kv 'Microsoft.KeyVault/vaults@2021-06-01-preview' = {
  name: 'examplekeyvault'
  location: 'westus'
  properties: {
    tenantId: tenant().tenantId
    ...
  }
}

Следующие шаги

Дополнительные сведения об областях развертывания см. в следующих статьях: