我正在使用TFS(2015更新3并实施了CI构建。我创建了两个用于发布的环境,一个是登台,另一个是在AWS Windows VM中托管的生产。我使用的是IIS Deploy WinRM扩展(https://marketplace.visualstudio.com/items?itemName=ms-vscs-rm.iiswebapp)在发布任务中将程序包部署到远程服务器。
暂存IIS托管在同一个构建计算机上,部署任务正常。当我部署到生产环境时,我遇到了以下错误。
部署在计算机xx.xx.xx.xx上失败,并显示以下消息:System.Management.Automation.Remoting.PSRemotingTransportException:连接到远程服务器xx.xx.xx.xx失败,并显示以下错误消息:WinRM无法完成操作。验证指定的计算机名称是否有效,计算机是否可通过网络访问,以及是否启用了WinRM服务的防火墙例外,并允许从此计算机进行访问。默认情况下,公共配置文件的WinRM防火墙例外限制对同一本地子网内的远程计算机的访问。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。
我认为WinRM无法与目标服务器通信,因此无法正常工作。我尝试按照此链接中的说明进行操作(https://docs.microsoft.com/en-us/vsts/build-release/apps/cd/deploy-webdeploy-iis-winrm)。
我在两台计算机上配置了winRM,甚至在目标服务器上为可信主机添加了构建计算机(我发起了发布)。在这两台机器中,winRM服务正在侦听端口5985,5986。
我尝试测试WinRM连接并尝试在构建机器中执行以下命令。 test-wsman -ComputerName -UseSSL
我收到了以下错误
test-wsman:"> WinRM无法完成操作。验证指定的 计算机名称有效,即WinRM 服务已启用并允许从此计算机进行访问。默认情况下,公共配置文件的WinRM防火墙例外 限制对同一本地子网内的远程计算机的访问。
我确定问题是WinRM无法与目标服务器通信。此TFS winRM部署扩展的要求之一是服务器应该是域加入或工作组加入。 (在https://docs.microsoft.com/en-us/vsts/build-release/apps/cd/deploy-webdeploy-iis-winrm中提到)。这是部署不起作用的原因,我如何加入这两个域?由于目标服务器托管在AWS(它是一个Windows VM机器),我们通过VPN连接。 构建机器的名称类似于MachineName.uk.companyname.com,目标服务器名称是MachineName.abc.risk.cloud(两者都在不同的域中)
有关调试此问题的想法并使此部署在目标服务器中运行吗?
答案 0 :(得分:0)
WinRM配置
Windows远程管理(WinRM)要求目标服务器为:
- 已加入域或加入工作组
- 能够使用HTTP或HTTPS协议进行通信
- 使用完全限定的域名(FQDN)或IP地址
解决
正如文档所述,您需要遵循WinRm配置的要求。由于使用test-wsman -ComputerName -UseSSL
也显示与目标服务器的通信,因此部署无法正常工作。
对于AWS相关,您可以尝试使用AWS Tools for Microsoft Visual Studio Team Services。适用于Microsoft Visual Studio Team Services(VSTS)的AWS工具是Microsoft VSTS和本地Microsoft Team Foundation Server(TFS)的扩展,可以轻松地将.NET应用程序部署到AWS。