Публикация кода Bicep из конвейера развертывания
При автоматизации процесса публикации спецификации шаблона или модуля Bicep необходимо убедиться, что все, что вы обычно делаете вручную, можно автоматизировать и выполнять в рамках конвейера. В этом уроке вы применяете принципы, которые вы ранее узнали для публикации спецификаций шаблонов и модулей Bicep из конвейера развертывания.
Спецификации шаблонов и модули
Bicep позволяет легко использовать код повторно. Ниже приведены два распространенных подхода к повторному использованию кода Bicep в ходе развертываний.
- спецификации шаблонов, оптимизированные для развертывания полных решений. Например, предположим, что вы определили набор ресурсов, защищенных безопасностью, для развертывания полной виртуальной машины в соответствии с спецификациями вашей компании. Этот код можно опубликовать как спецификацию шаблона. Ваши коллеги могут использовать спецификацию шаблона для развертывания полной виртуальной машины, даже на портале Azure.
- Модули, предназначенные быть компонентами других развертываний. Например, предположим, что вы создали файл Bicep в Azure, создающий учетную запись для хранения данных. Скорее всего, вам потребуется учетная запись хранения во многих других развертываниях, поэтому вы можете опубликовать Bicep-файл в реестре и использовать его в качестве модуля во всех развертываниях вашей организации.
При выборе между спецификациями шаблонов и модулями Bicep полезно помнить: если шаблон будет развернут в своей первоначальной форме по всей организации, спецификации шаблонов могут быть подходящим вариантом. Но если вы, скорее всего, повторно используете этот шаблон в нескольких родительских шаблонах, модули Bicep могут служить вашим потребностям лучше.
Проверка повторно используемых кода в конвейере
В отличие от обычных развертываний Bicep при создании спецификации шаблона или модуля, вы не развертываете ресурсы непосредственно в Azure. Вместо этого вы опубликовываете спецификацию шаблона или модуля. Затем можно использовать спецификацию шаблона или модуль в другом развертывании. развертывание затем осуществляет развёртывание определенных вами ресурсов. Следовательно, способы проверки и тестирования спецификаций шаблонов и модулей Bicep могут отличаться от процесса, используемого для обычных развертываний Bicep.
Рекомендуется проверять ваш код Bicep на ошибки. Линтер обнаруживает синтаксические проблемы и при этом предупреждает вас, если вы не следуете рекомендованным практикам.
Помимо linting, вам может потребоваться протестировать спецификации шаблонов и модули с помощью предварительной валидации. Вы даже можете рассмотреть возможность развертывания спецификаций шаблонов и модулей в Azure и тестирования того, что создаваемые ресурсы ведут себя должным образом. Однако это может быть сложно выполнить эти типы тестов из конвейера развертывания по двум причинам:
- Для предварительной проверки и развертывания требуется среда Azure, в которую будут развернуты ресурсы. Для развертывания и тестирования модулей может потребоваться сохранить выделенную подписку Azure или группу ресурсов.
- Многие спецификации шаблонов и модули требуют указания набора параметров. Возможно, вам потребуется создать тестовый набор параметров для спецификаций шаблонов или модулей, используемых при развертывании.
Вам потребуется решить, следует ли включать этапы в конвейере, которые выполняют развертывание и проверку спецификаций шаблонов и модулей. В этом модуле Microsoft Learn мы проверяем код Bicep, но не включаем другие формы тестирования. Если вы хотите протестировать спецификации шаблонов и модули, рассмотрите способ их развертывания в Azure. Кроме того, следует ли использовать выделенные подписки или группы ресурсов для развертывания ресурсов.
Совет
Мы рекомендуем вам ознакомиться с способом тестирования кода Bicep с помощью Azure Pipelines для получения дополнительных сведений о том, как протестировать файлы Bicep в автоматизированном конвейере.
Проверка подлинности и авторизация
При публикации спецификаций шаблонов в Azure пользователю Microsoft Entra необходимо предоставить доступ к группе ресурсов, содержащей ресурс спецификации шаблона. Аналогичным образом, при публикации модуля Bicep в реестре пользователь Microsoft Entra должен иметь разрешение на запись в экземпляр реестра контейнеров Azure, который ваша организация использует для своих модулей Bicep.
При работе с конвейером автоматического развертывания применяются те же принципы. Тем не менее, так как вы не являетесь ответственным за выполнение развертывания, необходимо убедиться, что учетная запись службы вашего конвейера имеет соответствующий доступ к группе ресурсов для публикации спецификации шаблона или к реестру контейнеров для публикации модулей.
Совет
При публикации модуля в реестр субъект-служба, выполняющий развертывание, вероятно, не требует большого количества разрешений. Если ваш реестр использует авторизацию Microsoft Entra, служебный принципал должен иметь только разрешение AcrPush на реестр.
Рассмотрите возможность использования принципа наименьших привилегий в безопасности. Предоставьте субъекту-службе конвейера доступ только к реестру контейнеров, а не к группе ресурсов или подписке.
Публикация спецификаций шаблонов и модулей из конвейера
При публикации спецификации шаблона с собственного компьютера с помощью Azure CLI вы используете следующую команду:
az ts create \
--name StorageWithoutSAS \
--resource-group MyResourceGroup \
--location westus3 \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1 \
--template-file main.bicep
Эту команду Azure CLI можно преобразовать в шаг конвейера:
- task: AzureCLI@2
name: Publish
displayName: Publish template spec
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az ts create \
--name StorageWithoutSAS \
--resource-group MyResourceGroup \
--location westus3 \
--display-name "Storage account with SAS disabled" \
--description "This template spec creates a storage account, which is preconfigured to disable SAS authentication." \
--version 1 \
--template-file main.bicep
Конвейер использует тот же процесс для публикации спецификации шаблона, которую вы использовали бы самостоятельно.
Аналогичным образом при публикации модуля Bicep с собственного компьютера с помощью Azure CLI вы используете следующую команду:
az bicep publish \
--file module.bicep \
--target 'br:toycompany.azurecr.io/mymodules/myqueue:2'
Вы также можете преобразовать эту команду Azure CLI в шаг конвейера:
- task: AzureCLI@2
name: Publish
displayName: Publish Bicep module
inputs:
azureSubscription: $(ServiceConnectionName)
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az bicep publish \
--file module.bicep \
--target 'br:toycompany.azurecr.io/mymodules/myqueue:2'
Совет
В этом примере имя хоста реестра Bicep (toycompany.azurecr.io
) внедрено в определение шага конвейера. Это не рекомендуется. Переменные среды можно использовать для задания параметров конфигурации, таких как это. Вы увидите, как это работает позже в этом модуле Microsoft Learn.
Как опубликовать спецификацию шаблона из конвейера, описано в этом уроке.
Использование спецификации модуля или шаблона
В предыдущих модулях обучения Microsoft Learn вы узнали, как развернуть ресурсы, определенные в спецификациях шаблонов, и как использовать модули Bicep, хранящиеся в реестрах. Независимо от того, публикуете ли спецификации шаблонов и модули вручную или из конвейера развертывания, их следует использовать и развертывать таким же образом.
Например, вы развертываете спецификацию шаблона или Bicep-файл в группе ресурсов с помощью команды Azure CLI az deployment group create
или командлета New-AzResourceGroupDeployment
с помощью Azure PowerShell.