Краткое руководство. Публикация модулей Bicep в частном реестре модулей

Узнайте, как публиковать модули Bicep в частном реестре модулей и как вызывать модули из файлов Bicep. Частный реестр модулей позволяет предоставить общий доступ к модулям Bicep в организации. Дополнительные сведения см. в статье Создание частного реестра для модулей Bicep. Если вы хотите внести свой вклад в реестр, ознакомьтесь с руководством по участию.

Предварительные требования

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Для работы с реестрами модулей требуется CLI Bicep версии 0.4.1008 или новее. Для использования с Azure CLI также необходима версия Azure CLI 2.31.0 или новее. Для использования с Azure PowerShell также необходима версия Azure PowerShell 7.0.0 или новее.

Реестр Bicep находится в Реестре контейнеров Azure (ACR). Чтобы создать реестр, см. статью Краткое руководство. Создание реестра контейнеров с помощью файла Bicep.

Сведения о настройке среды для разработки Bicep см. в разделе Установка средств Bicep. После выполнения этих действий вы получите Visual Studio Code и расширение Bicep или Visual Studio и расширение Bicep.

Создание модулей Bicep

Модуль — это файл Bicep, развернутый из другого файла Bicep. Любой файл Bicep можно использовать в качестве модуля. При работе с этим кратким руководством можно использовать приведенный ниже файл Bicep. При этом будет создана учетная запись хранения.

@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

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Сохраните файл Bicep как storage.bicep.

Публикация модулей

Если у вас нет реестра контейнеров Azure (ACR), ознакомьтесь с разделом Предварительные требования, чтобы создать реестр. Вам потребуется имя сервера входа для ACR. Формат имени сервера входа: <registry-name>.azurecr.io. Чтобы получить имя сервера входа, выполните следующую команду:

az acr show --resource-group <resource-group-name> --name <registry-name> --query loginServer

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

az bicep publish --file storage.bicep --target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 --documentationUri https://www.contoso.com/exampleregistry.html

В предыдущем примере ./storage.bicep — это файл Bicep, который нужно опубликовать. При необходимости обновите путь к файлу. Путь к модулю имеет следующий синтаксис:

br:<registry-name>.azurecr.io/<file-path>:<tag>
  • br — имя схемы для реестра Bicep.
  • Путь к файлу в реестре контейнеров Azure называется repository. Путь к файлу может содержать сегменты, разделенных символом /. Этот путь к файлу создается, если его нет в реестре.
  • Тег используется для указания версии модуля.

Чтобы проверить опубликованные модули, вы можете перечислить содержимое репозитория ACR:

az acr repository list --name <registry-name> --output table

Вызов модулей

Чтобы вызвать модуль, создайте новый файл Bicep в Visual Studio Code. В новом файле Bicep введите следующую строку:

module stgModule 'br:<registry-name>.azurecr.io/bicep/modules/storage:v1'

Замените <registry-name> именем своего реестра ACR. Восстановление модуля в локальном кэше займет некоторое время. Когда модуль будет восстановлен, красная волнистая линия, подчеркивающая путь к модулю, исчезнет. В конце строки добавьте = и пробел, а затем выберите required-properties, как показано на снимке экрана ниже. Структура модуля заполнится автоматически.

Обязательные свойства расширения Bicep для Visual Studio Code

Ниже приведен пример готового файла Bicep.

@minLength(3)
@maxLength(11)
param namePrefix string
param location string = resourceGroup().location

module stgModule 'br:ace1207.azurecr.io/bicep/modules/storage:v1' = {
  name: 'stgStorage'
  params: {
    location: location
    storagePrefix: namePrefix
  }
}

Сохраните файл Bicep локально, а затем разверните его с помощью Azure CLI или Azure PowerShell:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

На портале Azure проверьте, создана ли учетная запись хранения.

Очистка ресурсов

Если ресурсы Azure больше не нужны, используйте Azure CLI или модуль Azure PowerShell, чтобы удалить группу ресурсов, созданную для краткого руководства.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

Дальнейшие действия