Использование модуля Az в конвейере выпуска DevOps Azure
Я хочу использовать модуль Azure PowerShell (он же модуль Az) в конвейере выпуска DevOps Azure. Однако существующие параметры PowerShell, похоже, не работают. Я пробовал разные вещи, но установка нового модуля Az просто вызывает кучу ошибок, в том числе Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook.
Обычная задача PowerShell не имеет встроенных модулей Azure. А задача Azure PowerShell использует модуль Azure RM PowerShell, который был удален (т. Е. Он все еще поддерживается, но новые функции добавляться не будут).
Вышеуказанная ошибка, скорее всего, вызвана тем, что при запуске задачи Azure PowerShell перед запуском сценария выполняется следующее:
2019-01-13T13:34:14.5416432Z ==============================================================================
2019-01-13T13:34:14.5416555Z Task : Azure PowerShell
2019-01-13T13:34:14.5416623Z Description : Run a PowerShell script within an Azure environment
2019-01-13T13:34:14.5416705Z Version : 3.1.18
2019-01-13T13:34:14.5416762Z Author : Microsoft Corporation
2019-01-13T13:34:14.5416831Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613749)
2019-01-13T13:34:14.5416969Z ==============================================================================
2019-01-13T13:34:20.3546127Z ##[command]Import-Module -Name C:\Modules\AzureRm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 -Global
2019-01-13T13:34:58.4365259Z ##[command]Clear-AzureRmContext -Scope Process
2019-01-13T13:34:59.2732327Z ##[command]Disable-AzureRmContextAutosave -ErrorAction SilentlyContinue
2019-01-13T13:35:00.1691359Z ##[command]Add-AzureRMAccount -ServicePrincipal -Tenant *** -Credential System.Management.Automation.PSCredential -Environment AzureCloud @processScope
2019-01-13T13:35:01.5702545Z ##[command] Select-AzureRMSubscription -SubscriptionId d5eaaba3-2968-456a-98a4-e53e961fc896 -TenantId ***
2019-01-13T13:35:02.1592660Z ##[command]& 'D:\a\r1\a\ws-build\tools\install-dependencies.ps1'
Естественно, в новом проекте я не хочу создавать сценарии PowerShell с модулем, который больше не будет продвинутым.
И если подумать, даже если мне удастся обойти это, мне придется как-то проходить аутентификацию с Azure, что для меня делает существующий пользовательский интерфейс DevOps Azure, и я пока не вижу, как это сделать с модулем Az.
Поиск в Google, похоже, не помогает, так как большая часть информации по-прежнему относится к устаревшему модулю AzureRM. Итак... В заключение.
Как использовать модуль PowerShell Azure (Az) в конвейере выпуска DevOps Azure?
2 ответа
Попробуйте использовать Azure Powershell Task версии 4.* (Предварительный просмотр). Эта функция все еще в предварительном просмотре. Используйте это с агентами Self Hosted. Это будет выпущено для агента Microsoft Hosted в ближайшее время.
В качестве обходного пути я использовал Hosted VS2017 Agent Pool, так как у них есть готовый к использованию модуль Az
Задача зависит от конкретного модуля. Если вы хотите использовать задачу, вы не можете ничего с ней поделать, кроме как ждать, пока они обновят ее.
При желании вы можете раскошелиться на хранилище задач и обновить его самостоятельно. Или вы можете написать собственную логику для аутентификации Azure.
Вы можете написать свои сценарии с обратным псевдонимом (Az -> AzureRM) в отличие от псевдонимов, предоставляемых модулем Az (AzureRM -> Az), чтобы вы могли писать свои сценарии с использованием имен командлетов, которые будут поддерживаться, таким образом, в будущем. проверяя себя.
Я пошел по пути взлома, но в итоге я создал фиктивный модуль AzureRM для установки на моих собственных агентах, а затем изменил сценарии для задачи Azure PowerShell на моих агентах, чтобы загрузить псевдонимы AzureRM. В результате у меня установлены агенты Az, и они могут запускать имена командлетов в стиле AzureRM и / или имена командлетов в стиле Az в версии 3 или 4 задачи Azure PowerShell. Это позволило мне переключиться на Az на агентах сборки и позволить группам постепенно переносить свои сценарии для использования имен командлетов Az.
Мое решение на Github: https://github.com/brendonthiede/dummy-AzureRM
Одно предостережение заключается в том, что для этого может потребоваться "повторная модификация" сценариев Azure PowerShell на агентах при каждом обновлении задачи.
Не в каждой версии задачи Azure Powershell есть модули Az и AzureRm.