1

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

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

这导致以下结果:

新 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 提供了缺失的部分。我将添加另一个我需要找到的链接的屏幕截图,以将构建设置为在实际帐户下运行。

按照以下答案的规定点击后,点击这里:

4

2 回答 2

3

在 Azure 资源管理器中,您必须使用 Azure Active Directory 身份验证,无需证书。这适用于 cli、PowerShell、REST API 等。

在 VSO 中有 Azure PowerShell 的构建任务。当您使用该任务时,您指定一个“连接”或订阅来执行任务......因此您将凭据保存在 VSO 中。您可以使用常规的 PowerShell 任务,但是您必须自己保护信用。

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

VSO 构建定义

于 2015-09-02T21:56:49.423 回答
1

我在使用带有 VSO 的 Azure 资源管理器时也遇到了很多麻烦。我终于找到了一个可行的解决方案,方法是创建一个服务主体帐户,该帐户对 Azure 订阅具有足够的权限,可以从 Visual Studio Online 进行部署。

我使用 David Ebbo 的这篇博文创建了服务主体帐户:http ://blog.davidebbo.com/2014/12/azure-service-principal.html

在 VSO 中,我删除了“Azure PowerShell”步骤并将其替换为“PowerShell”步骤。在 PowerShell 脚本中,我首先登录服务主体帐户,然后使用 Azure 资源管理器部署我的应用程序。

我的发现的更多细节可以在 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

于 2015-09-24T15:13:10.807 回答