Je souhaite utiliser Azure PowerShell Module (aka Az Module) dans un pipeline de publication Azure DevOps. Cependant, les options PowerShell existantes ne semblent pas fonctionner. J'ai essayé plusieurs choses, mais l'installation du nouveau module Az soulève juste une tonne d'erreurs, y compris Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook.
La tâche PowerShell standard ne comporte aucun module Azure intégré. Et la tâche Azure PowerShell utilise le module Azure RM PowerShell , qui a été retiré (c'est-à-dire qu'il est toujours pris en charge, mais aucune nouvelle fonctionnalité ne sera ajoutée).
L'erreur ci-dessus est probablement due au fait que lorsque la tâche Azure PowerShell démarre, elle effectue les opérations suivantes avant d'exécuter mon script:
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'
Naturellement, sur un nouveau projet, je ne veux pas créer de scripts PowerShell avec un module qui ne sera plus avancé.
Et en pensant à l'avenir, même si j'arrive à surmonter cela, je devrai m'authentifier d'une manière ou d'une autre avec Azure, ce que fait l'interface utilisateur Azure DevOps pour moi, et je ne vois pas encore comment faire cela avec le module Az.
La recherche sur Google ne semble pas aider, car la plupart des informations concernent toujours le module AzureRM obsolète. Alors ... En résumé.
Comment utiliser le module Powershell Azure (Az) dans un pipeline de versions Azure DevOps?
Comme solution de contournement, j'utilise le pool d'agents VS2017 hébergé car ceux-ci ont le module Az prêt à l'emploi
Essayez d'utiliser Azure Powershell Task version 4. * (Aperçu). Cette fonctionnalité est toujours en aperçu. Utilisez-le avec des agents auto-hébergés. Cela sera bientôt disponible pour l'agent Microsoft Hosted.
La tâche dépend d'un module spécifique. Si vous souhaitez utiliser la tâche, vous ne pouvez rien faire d'autre que d'attendre qu'ils soient mis à jour.
Si vous le souhaitez, vous pouvez bifurquer le référentiel de tâches et le mettre à jour vous-même. Ou vous pouvez écrire votre propre logique pour l'authentification Azure.
Vous pouvez écrire vos scripts avec un alias inversé (Az -> AzureRM) par opposition aux alias fournis par le module Az (AzureRM -> Az), afin que vous puissiez écrire vos scripts en utilisant les noms des applets de commande qui seront pris en charge, donc future- vous éprouver.
J'ai pris la route du piratage, mais j'ai fini par créer un module AzureRM factice à installer sur mes agents auto-hébergés, puis j'ai modifié les scripts de la tâche Azure PowerShell sur mes agents pour charger les alias AzureRM. Le résultat final est que j'ai installé Az sur mes agents et qu'ils peuvent exécuter des noms d'applet de commande de style AzureRM et/ou des noms d'applet de commande de style Az sur la version 3 ou 4 de la tâche Azure PowerShell. Cela m'a permis de passer à Az sur les agents de build et aux équipes de migrer progressivement leurs scripts pour utiliser les noms des applets de commande Az.
Ma solution est sur Github: https://github.com/brendonthiede/dummy-AzureRM
Une mise en garde est que cela peut nécessiter de "remodifier" les scripts Azure PowerShell sur les agents chaque fois que la tâche est mise à jour.