2

I have a build running in Azure DevOps, on an Ubuntu 16.04 hosted build agent. I'm using the latest version of the "Azure Powershell" task (version 4.* preview), which is supposed to be multi-platform, support Powershell core, and support using the Azure Powershell Az module.

Azure Powershell Task Version 4

However, it doesn't quite work. Before running any of my script, it errors out with:

##[section]Starting: Azure PowerShell script: InlineScript
==============================================================================
Task         : Azure PowerShell
Description  : Run a PowerShell script within an Azure environment
Version      : 4.0.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613749)
==============================================================================
##[warning]Can\'t find loc string for key: GeneratingScript
GeneratingScript
[command]/usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command . '/home/vsts/work/_temp/e66222aa-283d-4dfd-b5c1-f1d2a4a3ba9f.ps1'
Could not find the module Az.Accounts with given version. If the module was recently installed, retry after restarting the Azure Pipelines task agent.
At /home/vsts/work/_tasks/AzurePowerShell_72a1931b-effb-4d2e-8fd8-f8472a07cb62/4.0.0/InitializeAz.ps1:25 char:5
+     throw ("Could not find the module Az.Accounts with given version. ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OperationStopped: (Could not find ...nes task agent.:String) [], RuntimeException
+ FullyQualifiedErrorId : Could not find the module Az.Accounts with given version. If the module was recently installed, retry after restarting the Azure Pipelines task agent.

##[error]PowerShell exited with code '1'.
##[error]PowerShell wrote one or more lines to the standard error stream.
##[section]Finishing: Azure PowerShell script: InlineScript

The Az Powershell module appears to work/load correctly on the Windows VS2017 hosted agent, but no luck on Ubuntu. Any recommendations on fixing this?

1

1 Answer 1

5

I was able to get Az Powershell working in my Azure DevOps build on an Ubuntu agent by adding a prior build step that installs the Az Powershell module on the build agent.

I added a powershell script to install the Az module and uninstall the Azure-Rm module; and I called it from a command-line task so I could wrap it in sudo to make it a global change.

Here's the command-line task (YAML):

steps:
- displayName: 'Install Az Powershell Modules'
  script: |
   sudo /usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "$(Build.Repository.LocalPath)/build/install-az-modules.ps1" 

And here's the build/install-az-modules.ps1 script:

<#
.SYNOPSIS
    Build agent script to install Az Powershell modules. This script should be run as sudo.

    On a linux build agent, this command can be run as:
    sudo /usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -Command . '$(Build.Repository.LocalPath)/build/install-az-modules.ps1'
#>

# Disable status info to clean up build agent stdout
$global:ProgressPreference = 'SilentlyContinue'
$global:VerbosePreference = "SilentlyContinue"

$azureRmModule = Get-InstalledModule AzureRM -ErrorAction SilentlyContinue
if ($azureRmModule) {
  Write-Host 'AzureRM module exists. Removing it'
  Uninstall-Module -Name AzureRM -AllVersions
  Write-Host 'AzureRM module removed'
}

Write-Host 'Installing Az module...'
Install-Module Az -Force -AllowClobber

if (Get-Command Uninstall-AzureRm -ErrorAction SilentlyContinue) {
  Write-Host 'Running Uninstall-AzureRm...'
  Uninstall-AzureRm
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.