不同 AD 域中机器的 TFS 'Powershell on Target Machines' 任务

TFS 'Powershell on Target Machines' task for machines in different AD domain

我们想对我们的部署使用 TFS 版本管理。我们有几个环境(dev、qa、staging、prod)。他们每个人都在单独的 AD 林中。构建机器也驻留在单独的林中。他们之间没有信任。

我将目标机器设置为接受 PS 远程处理的 CredSSP 身份验证。我能够从构建机器进入目标机器上的 PS 会话。但是 TFS 任务没有运气 'Powershell on Target Machines'.

这里是我的任务在 TFS 中的样子: TFS PS on Target Machines task

在日志中: 2016-12-30T15:04:11.0279893Z System.Management.Automation.Remoting.PSRemotingTransportException:连接到远程服务器 app.dev.local 失败,出现以下错误消息:WinRM 无法处理请求。使用协商身份验证时发生以下错误代码 0x80090322 的错误:发生未知的安全错误。

有什么方法可以在构建机器 AD 域之外的目标机器上创建 TFS 运行 PS?

AD 信任看起来不像一个选项。如果没有适当的 PS 远程处理,发布管理似乎无法为我们提供太多价值。

TL;DR;

不,你有两个选择。

  1. 在您的主域和所有子域之间设置一种信任方式,以便您的生产域凭据可以用于所有子域。
  2. 使用影子帐户 允许跨域身份验证。这些是在允许身份验证的机器上具有相同用户名和密码的本地帐户。这是针对非信任域身份验证的官方 MSFT 解决方法。

长答案

除此之外,由于您已经远离支持的快乐路径,您将需要实施您自己的自定义任务,以促进您想要的跨域身份验证。在 PowerShell 中实现您自己的任务应该是一项相当简单的任务。

https://www.visualstudio.com/en-us/docs/integrate/extensions/develop/add-build-task

现实情况是,只有少数几个有限的场景需要“测试 AD”环境,并且拥有用于 Dev、QA 或 Staging 的域永远是不正确的。 AD 不是那样设计的,我从未见过它为组织或开发工作带来好处。它是过度偏执的系统管理员的产物,这是一个失败的原因。

拥有永久附加域的唯一原因是您的系统管理员可以测试他们的域更改和配置。

对于主动更改 AD 或需要特定测试设置的软件开发项目,您将动态创建测试域以及所需的测试机器。这就是您如何针对域创建有效且可重复的测试。