Использование динамических типов для ресурсов Bicep Microsoft Graph

Расширение Microsoft Graph Bicep поддерживает динамические типы, которые позволяют использовать семантическое версионирование как для бета-версии Microsoft Graph, так и для версии 1.0. Динамические типы позволяют использовать определенные версии типов ресурсов Microsoft Graph Bicep, поэтому будущие критические изменения не влияют на существующие файлы Bicep. При использовании динамических типов Bicep получает требуемую версию типа из реестра артефактов Майкрософт. Эти версии типов не зависят от пакета NuGet компилятора Bicep.

Динамические типы можно настроить двумя способами:

  • Непосредственно в файле main.bicep .
  • Определив удобочитаемый псевдоним версии типа в файле bicepconfig.json и ссылаясь на него в main.bicep.

Выберите версию типа

Чтобы использовать типы ресурсов Microsoft Graph Bicep, добавьте ссылку на репозиторий типов в реестре артефактов Майкрософт. Перейдите в реестр артефактов Майкрософт и найдите расширение Bicep Microsoft Graph, чтобы найти последнюю или требуемую версию для бета-версии Microsoft Graph и версии 1.0.

Настройка динамических типов в файле Bicep

В файле main.bicep найдите нужную версию репозитория типов Bicep в Microsoft Graph. Замените <v1.0-version> на версию type для Microsoft Graph v1.0, которую вы хотите использовать.

extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:<v1.0-version>'

Вы также можете использовать типы из обеих версий в одном файле:

extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:<v1.0-version>'
extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/beta:<beta-version>'

// Use Microsoft Graph v1.0
resource group 'Microsoft.Graph/groups@v1.0' existing = {
    uniqueName: groupName
}

// Use Microsoft Graph beta
resource app 'Microsoft.Graph/applications@beta' existing = {
    uniqueName: appName
}

Объявляйте ресурсы с использованием разных типов версий. Чтобы различать типы с одинаковым именем от разных расширений, используйте полное имя типа:

extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:<v1.0-version-latest>' as latestGraphV1
extension 'br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:<v1.0-version-older>' as olderGraphV1

// Use the latest Microsoft Graph v1.0 Bicep types
resource group 'latestGraphV1:Microsoft.Graph/groups@v1.0' existing = {
    uniqueName: groupName
}

// Use an older Microsoft Graph v1.0 Bicep type version
resource app 'olderGraphV1:Microsoft.Graph/applications@v1.0' existing = {
    uniqueName: appName
}

Настройка динамических типов в конфигурации Bicep

Определите понятные псевдонимы для версий типов Microsoft Graph Bicep в bicepconfig.json. Замените <v1.0-version> и <beta-version> на нужные версии.

{
    "extensions": {
        "graphV1": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:<v1.0-version>",
        "graphBeta": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/beta:<beta-version>"
    }
}

Затем используйте эти псевдонимы в файле main.bicep :

extension graphV1
extension graphBeta

// Use Microsoft Graph v1.0
resource group 'Microsoft.Graph/groups@v1.0' existing = {
    uniqueName: groupName
}

// Use Microsoft Graph beta
resource app 'Microsoft.Graph/applications@beta' existing = {
    uniqueName: appName
}

Вы также можете определить псевдонимы для разных версий типов из той же версии Microsoft Graph (например, более новых и старых типов версии 1.0) в bicepconfig.json и ссылаться на них в main.bicep с помощью полных имен типов.

Например, в bicepconfig.json:

{
    "extensions": {
        "graphV1Latest": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.2.0-preview",
        "graphV1Older": "br:mcr.microsoft.com/bicep/extensions/microsoftgraph/v1.0:0.1.8-preview"
    }
}

Далее в main.bicep:

extension graphV1Latest
extension graphV1Older

// Use the latest Microsoft Graph v1.0 Bicep types
resource group 'graphV1Latest:Microsoft.Graph/groups@v1.0' existing = {
    uniqueName: groupName
}

// Use an older Microsoft Graph v1.0 Bicep type version
resource app 'graphV1Older:Microsoft.Graph/applications@v1.0' existing = {
    uniqueName: appName
}