1

我正在尝试从 VSTS 发布到运行 IIS 的 VM(在 AWS 上运行)。为此,我使用了三个任务。

  1. Windows 机器文件复制
  2. 管理 IIS 应用程序
  3. 部署 IIS 应用程序

在发布之前,我正在运行一个构建管道,它为我提供了一个包含 Web 应用程序 (webapp.zip) 的工件。当我手动将它放在服务器上时,我可以运行我发布的第 2 步和第 3 步,并且应用程序可以正常工作。我遇到的问题是我没有让 Windows 机器文件复制工作。它总是抛出一个异常,给出“系统错误 53:找不到网络路径”。当然这些机器没有加入域,因为我在 VSTS 上运行我的版本并且需要 AWS VM 上的文件。我尝试打开端口 445(用于文件共享)并确保用户对目标机器上的目标路径具有权限。所以我的问题是:如果两台机器没有连接,我如何才能将文件从 VSTS 移动到 AWS VM。

4

3 回答 3

1

改用FTP 上传cURL 上传步骤/任务。

关于如何创建 FTP 站点,可以参考这篇文章:在 IIS 7 中创建一个新的 FTP 站点

于 2017-01-09T08:01:05.407 回答
-1

免责声明:此答案仅说明如何满足使用 Windows 机器文件复制和管理/部署 IIS 任务的要求。请始终关注目标主机的安全性,其加固和安全评估是绝对必要的。

如评论中所述,您需要保护部署通道不受外界影响,这里有一个高级示例:

保护您的部署渠道


答: 为了使用Windows 机器文件复制任务,您需要:

  • 在目标机器(运行 IIS 的机器)上启用文件和打印机共享,从管理命令提示符运行以下命令:

    netsh advfirewall 防火墙设置规则组=“文件和打印机共享”新启用=是
  • 确保在目标机器上安装了 PowerShell 4 或更新版本;从 PS 命令提示符执行以下命令会打印本地计算机上安装的版本:

    PS> $PSVersionTable.PSVersion

    例如,要获得 PowerShell 5,您可以安装WMF 5

  • 在目标机器上,您必须安装 .NET Framework 4.5 或更高版本;

对于其他两个任务(管理/部署 IIS 任务),都需要您在目标计算机上启用 WinRM HTTPS 侦听器。对于开发部署场景,您可以按照以下步骤操作:

  • 从官方 VSTS Tasks GitHub 存储库下载ConfigureWinRM.ps1 PowerShell 脚本;

  • 从管理 PowerShell 命令提示符启用 RemoteSigned PowerShell 执行策略:

    PS> Set-ExecutionPolicy RemoteSigned
  • 使用以下参数运行脚本:

    PS> ConfigureWinRM.ps1 FQDN https

请注意,FQDN 是 VSTS 任务访问的机器的完整域名,例如 myhostname.domain.example 。另请注意,此脚本从 Internet 下载两个可执行文件(makecert.exewinrmconf.cmd),因此这台机器必须具有 Internet 连接。否则只需下载这两个文件,将它们与脚本同级放置,从脚本中注释掉 Download-Files 调用。

现在,您已启用带有自签名证书的 WinRM HTTPS 侦听器。请记住对这两个任务使用“测试证书”选项(具有讽刺意味的是,不测试证书,更好的名称应该是“跳过 CA 检查”)。

在生产部署场景中,您可能希望使用正确签名的证书。

于 2017-01-08T13:34:43.563 回答
-2

Windows 文件复制旨在在同一网络上工作,并且在 Internet 上启用它会打开您的服务器以进行黑客攻击。它是为内部网络设计的。除非管理得当,否则 FTP 也会导致重大的安全风险。

向前推进的最简单方法是在您要发布到的 AWS 中的 VM 上运行代理。然后,代理会将工件下载到 AWS VM 并运行您需要安装的任何任务。

这允许您在本地计算机上运行任务,而不会面临安全风险。

如果您需要在 AWS 中管理多台机器,您可以轻松创建一个本地网络,允许您的单个代理使用 Windows 文件复制将文件推送到多个虚拟机而没有风险。

于 2017-01-08T13:24:05.740 回答