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

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

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

Настройка частного реестра

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

  1. Если у вас уже есть реестр контейнеров, можно использовать его. Если вам нужно создать реестр контейнеров, см. инструкции в статье Краткое руководство. Создание реестра контейнеров с помощью файла Bicep.

    Можно использовать любой из доступных номеров SKU реестра для реестра модулей. Георепликация реестра предоставляет пользователям локальное присутствие или горячее резервное копирование.

  2. Получите имя сервера входа. Это имя потребуется при подключении к реестру из ваших файлов Bicep. Формат имени сервера входа: <registry-name>.azurecr.io.

    Чтобы получить имя сервера для входа, выполните командлет Get-AzContainerRegistry.

    Get-AzContainerRegistry -ResourceGroupName "<resource-group-name>" -Name "<registry-name>"  | Select-Object LoginServer
    
  3. Для публикации модулей в реестре необходимо разрешение на отправку образа. Для развертывания модуля из реестра необходимо разрешение на получение образа. Дополнительные сведения о ролях, которые предоставляют достаточный доступ, см. в статье Роли и разрешения Реестра контейнеров Azure.

  4. В зависимости от типа учетной записи, используемой для развертывания модуля, может потребоваться настройка учетных данных. Эти учетные данные нужны для получения модулей из реестра. По умолчанию учетные данные получаются из Azure CLI или Azure PowerShell. Можно настроить приоритет получения учетных данных в файле bicepconfig.json. Дополнительные сведения см. в разделе Учетные данные для восстановления модулей.

Внимание

Частный реестр контейнеров доступен только пользователям с требуемым доступом. Однако доступ к нему можно получить через общедоступный Интернет. В целях повышения уровня безопасности можно требовать доступ через частную конечную точку. См. статью Частное подключение к реестру контейнеров Azure с помощью Приватного канала Azure.

В реестре частных контейнеров должна быть установлена политика azureADAuthenticationAsArmPolicy на enabled. Если azureADAuthenticationAsArmPolicy задано значение disabled, при публикации модулей вы получите сообщение об ошибке 401 (несанкционированное). В реестре контейнеров Azure вводится политика условного доступа.

Предупреждение

Если параметр properties.policies.quarantinePolicy.status включен в реестре контейнеров Azure, модуль Bicep будет "успешно" опубликован, но версии и теги удаляются или скрыты.

Публикация файлов в реестре

После настройки реестра контейнеров можно публиковать в нем файлы. Используйте команду publish и предоставьте все файлы Bicep, которые нужно использовать в качестве модулей. Укажите целевое расположение модуля в реестре. Команда публикации создает шаблон ARM, который хранится в реестре. Это означает, что при публикации Bicep-файла, ссылающегося на другие локальные модули, эти модули полностью расширяются как один JSON-файл и публикуются в реестре.

Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html

С помощью интерфейса командной строки Bicep версии 0.27.1 или более поздней можно опубликовать модуль с исходным кодом Bicep в дополнение к скомпилированному шаблону JSON. Если модуль публикуется с исходным кодом Bicep в реестре, можно нажать клавишу F12 (Перейти к определению) из Visual Studio Code, чтобы просмотреть код Bicep. Расширение Bicep версии 0.27 или новее требуется для просмотра файла Bicep.

Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html -WithSource

При использовании переключателя исходного кода в манифесте отображается еще один слой.

Снимок экрана: реестр модулей bicep с исходным кодом.

Если модуль Bicep ссылается на модуль в частном реестре, конечная точка ACR отображается. Чтобы скрыть полную конечную точку, можно настроить псевдоним для частного реестра.

Просмотр файлов в реестре

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

  1. Войдите на портал Azure.

  2. Выполните поиск реестров контейнеров.

  3. Выберите ваш реестр.

  4. Выберите службы ->Репозитории в меню слева.

  5. Выберите путь к модулю (репозиторий). В предыдущем примере имя пути к модулю —bicep/modules/storage.

  6. Выберите тег. В предыдущем примере тег — v1.

  7. Ссылка на артефакт соответствует ссылке , используемой в файле Bicep.

    Ссылка на артефакт реестра модуля Bicep

Теперь можно создать ссылку на файл в реестре из файла Bicep. Примеры синтаксиса, используемого для ссылки на внешний модуль, см. в статье Модули Bicep.


Работа с файлами реестра Bicep

При использовании файлов bicep, размещенных в удаленном реестре, важно понять, как локальный компьютер взаимодействует с реестром. При первом объявлении ссылки на реестр ваш локальный редактор пытается связаться с Azure Container Registry и загрузить копию этого реестра в локальный кэш.

Расположение локального кэша:

  • В Windows

    %USERPROFILE%\.bicep\br\<registry-name>.azurecr.io\<module-path\<tag>
    
  • На Linux

    /home/<username>/.bicep
    
  • На Mac

    ~/.bicep
    

Ваш локальный компьютер сможет распознать любые изменения, внесенные в удаленный реестр, до тех пор, пока вы не запустите restore с указанным файлом, содержащим ссылку на реестр.

az bicep restore --file <bicep-file> [--force]

Дополнительные сведения см. в команде restore .

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