Использование модуля Az в конвейере выпуска DevOps Azure - PullRequest
0 голосов
/ 13 января 2019

Я хочу использовать Модуль Azure PowerShell (он же Az Module) в конвейере выпуска 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 *1007*, который был удален (т. Е. Он все еще поддерживается, но новых функций нет). будет добавлено).

Указанная выше ошибка, скорее всего, вызвана тем, что при запуске задачи 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. Модуль. Add a subscription into the Azure context

Поиск в Google не помогает, так как большая часть информации все еще относится к устаревшему модулю AzureRM. Итак ... В итоге.

Как использовать модуль PowerShell Azure (Az) в конвейере выпуска DevOps Azure?

Ответы [ 4 ]

0 голосов
/ 09 июля 2019

Попробуйте использовать Azure Powershell Task версии 4. * (Предварительный просмотр). Эта функция все еще в предварительном просмотре. Используйте это с агентами Self Hosted. Это будет выпущено для агента Microsoft Hosted в ближайшее время.

Ссылка - https://developercommunity.visualstudio.com/content/problem/434058/unable-to-use-new-az-module-in-azure-devops.html

enter image description here

0 голосов
/ 23 января 2019

В качестве обходного пути я использовал Hosted VS2017 Agent Pool, так как они подготовили модуль Az к использованию

0 голосов
/ 27 марта 2019

Я пошел по пути взлома, но в итоге я создал фиктивный модуль AzureRM для установки на моих собственных агентах, а затем изменил сценарии для задачи Azure PowerShell на моих агентах, чтобы загрузить псевдонимы AzureRM. В результате я установил Az на своих агентах, и они могут запускать имена командлетов в стиле AzureRM и / или имена командлетов в стиле Az в версии 3 или 4 задачи Azure PowerShell. Это позволило мне переключиться на Az на агентах сборки и позволить группам постепенно переносить свои сценарии для использования имен командлетов Az.

Мое решение на Github: https://github.com/brendonthiede/dummy-AzureRM

Одно предостережение в том, что для этого может потребоваться «повторная модификация» сценариев Azure PowerShell на агентах при каждом обновлении задачи.

0 голосов
/ 13 января 2019

Задача зависит от конкретного модуля. Если вы хотите использовать задачу, вы не можете ничего с ней поделать, кроме как ждать, пока они обновят ее.

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

Вы можете написать свои сценарии с обратным псевдонимом (Az -> AzureRM) в отличие от псевдонимов, предоставляемых модулем Az (AzureRM -> Az), так что вы можете писать свои сценарии, используя имена поддерживаемых командлетов, Таким образом, будьте уверены в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...