Публикация кода 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.