web-dev-qa-db-ja.com

Azure DevOpsリリースパイプラインでのAzモジュールの使用

Azure DevOpsリリースパイプラインで Azure PowerShell Module (別名Az Module)を使用したいと思います。ただし、既存の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 UIで何とかしてAzureで認証する必要がありますが、Az Moduleでそれを行う方法はまだわかりません。 Add a subscription into the Azure context

ほとんどの情報が非推奨のAzureRMモジュールに関連しているため、グーグルは役に立ちません。だから...要約すると。

Azure DevOpsリリースパイプラインでAzure(Az)Powershellモジュールを使用するにはどうすればよいですか?

8
Colin Mackay

回避策として、Azモジュールを使用する準備ができているため、ホストされたVS2017エージェントプールを使用しています

3
Dexter Lakin

Azure Powershell Taskバージョン4. *(プレビュー)を使用してみてください。この機能はまだプレビュー段階です。これをセルフホストエージェントで使用します。これは、Microsoft Hosted Agent向けに間もなくリリースされます。

リファレンス- https://developercommunity.visualstudio.com/content/problem/434058/unable-to-use-new-az-module-in-Azure-devops.html

enter image description here

3
Divyanshu mehta

タスクは特定のモジュールに依存しています。タスクを使用する場合は、タスクが更新されるのを待つ以外は何もできません。

必要に応じて、 task repository をフォークして、自分で更新できます。または、Azure認証用の独自のロジックを記述できます。

Azモジュール(AzureRM-> Az)によって提供されるエイリアスではなく、リバースエイリアス(Az-> AzureRM)を使用してスクリプトを記述できるため、サポートされるコマンドレット名を使用してスクリプトを記述できます。自分を証明する。

1
Daniel Mann

ハックのルートをとりましたが、セルフホストエージェントにインストールするダミーのAzureRMモジュールを作成し、エージェントのAzure PowerShellタスクのスクリプトを変更してAzureRMエイリアスをロードしました。結果として、エージェントにAzがインストールされ、Azure PowerShellタスクのバージョン3または4のいずれかでAzureRMスタイルのコマンドレット名またはAzスタイルのコマンドレット名、あるいはその両方を実行できます。これにより、ビルドエージェントでAzに切り替え、チームがAzコマンドレット名を使用するようにスクリプトを徐々に移行できるようになりました。

私の解決策はGithubにあります: https://github.com/brendonthiede/dummy-AzureRM

1つの注意点は、タスクが更新されるたびに、エージェントのAzure PowerShellスクリプトを「再変更」する必要がある場合があることです。

1
Brendon