在VSO构建代理

时间:2015-09-02 09:23:34

标签: azure-devops azure-resource-manager azure-powershell azure-pipelines

我在Azure中的VM上设置了构建代理,该代理链接到我们的Visual Studio Online。

然后我有一个Azure Powershell构建步骤,它运行一个尝试执行New-AzureResourceGroup的脚本。

这导致以下结果:

New-AzureResourceGroup:未经授权

113 ##[error]At C:\BuildAgents\agent\_work\[...]\Deploy-AzureResourceGroup.ps1:47 char:1
114 ##[error]+ New-AzureResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation ...
115 ##[error]+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
116 ##[error]+ CategoryInfo          : CloseError: (:) [New-AzureResourceGroup], CloudException
117 ##[error]+ FullyQualifiedErrorId : Microsoft.Azure.Commands.Resources.NewAzureResourceGroupCommand

我可以在本地运行这些脚本,没有任何问题。

我尝试在脚本中导入发布设置文件,但似乎不允许以这种方式对New-AzureResourceGroup进行身份验证。

我在本地用户帐户(不是网络服务)下运行构建代理作为服务。

有谁知道如何允许构建代理执行New-AzureResourceGroup?

我希望能够进行完整的持续部署,包括设置和管理Azure中所需的所有内容,包括资源组。

更新

根据以下文章:

“如果使用此方法[发布设置文件]进行连接,则只能使用Azure服务管理(或ASM模式)命令。”

https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/

我认为这也适用于Azure powershell。

那么,如果不使用基于帐户的身份验证,是否真的无法在azure中管理资源?

更新

感谢@ bmoore-msft提供缺失的部分。我将添加另一个我需要找到的链接屏幕截图,以设置在实际帐户下运行的构建。

After clicking as prescribed in the answer below, click here:

2 个答案:

答案 0 :(得分:3)

在Azure Resource Manager中,您必须使用Azure Active Directory身份验证,不需要证书。这适用于cli,PowerShell,REST API等。

在VSO中,Azure PowerShell有一个构建任务。当您使用该任务时,您指定了一个"连接"或者订阅以执行任务...因此您将信用卡保存在VSO中。您可以使用常规的PowerShell任务,但之后您必须自己保护信用卡。

最后,当您在VSO中设置帐户连接时,必须是orgID,不支持MSA(PowerShell限制)。服务主要支持即将到来。

VSO Build Def

答案 1 :(得分:1)

使用Azure资源管理器和VSO时也遇到了很多麻烦。 我终于通过创建一个服务主体帐户找到了解决我的问题的有效方案,该帐户具有从Visual Studio Online部署的Azure订阅的足够权限。

我使用David Ebbo撰写的博客文章来创建服务主体帐户:http://blog.davidebbo.com/2014/12/azure-service-principal.html

在VSO中,我删除了“Azure PowerShell”步骤,并将其替换为“PowerShell”步骤。在PowerShell脚本中,我首先登录Service Principal帐户,然后使用Azure Resource Manager部署我的应用程序。

我的调查结果的更多详细信息可以在MSDN论坛上找到:https://social.msdn.microsoft.com/Forums/azure/en-US/d5a940e0-ed83-46ff-9efc-045fb9522c5b/ad-auth-from-azure-powershell-in-vso-fails-with-accessingwsmetadataexchangefailed?forum=azurescripting