我正在开发计算服务,需要自动部署我们的软件(〜30 megs)。 该软件是一个WCF服务,所以我坚持与Windows。 我不能使用单声道,因为我们使用了很多没有实现的类。
我们可以很容易地通过SSH和SFTP在linux上进行部署,默认启用。 Telnet服务必须在Windows实例上手动启动。 有没有办法利用RDP呢?
我可以创build一个启用了telnet的AMI。 但是,这似乎是矫枉过正。
人们如何在默认的Windows实例上自动部署? 还是每个人都已经安装了他们的软件创build一个AMI?
RDP不是Windows自动化的好select。
对Windows的ssh的替代是WinRM – Windows远程pipe理。 Powershell内置了对WinRM的支持。 如果您正在使用EC2(未在问题中列出,但问题标记为EC2),则在Amazon默认窗口映像上启用powershell。 您只需要在安全组中打开端口5985。
有一些关于如何使用PowerShell连接的说明: https : //stackoverflow.com/questions/10237083/how-to-programmatically-remotely-execute-a-program-in-ec2-windows-instance/13284313#13284313
对于Windows的SFTP的替代是CIFS(Windows文件共享),但它不是一个特别好的select – 该协议没有encryption。 您也可以使用PowerShell脚本传输文件 – 请参阅示例脚本: http : //poshcode.org/2216
如果您可以创build自己的AMI,请安装cygwin及其sshd服务器。 这将给你的文件传输和远程执行通过SSH到您的Windows实例。
RDP可能不是做你要找的最好的方法。 PowerShell远程处理可能是您为Linux部署“故事”提供类似体验的最佳方法。 您可以在远程机器上获得交互式shell会话或远程运行脚本。
习惯于使用Linux操作系统附带的SFTP服务器,Windows世界中的文件传输将会感觉像是一种黑客攻击。
您可以直接通过Internet运行SMB文件共享协议,但是这通常被认为是一种安全风险。
RDP协议具有内置的文件传输function,但是以批处理/非交互方式使用RDP客户端将会是一个狡猾的黑客(更不用说RDP中的文件传输机制本身有点狡猾的黑客)。
Powershell本身可以以类似于wget的方式从远程服务器下载文件 。 我不会在我的工作中对远程Windows服务器进行任何代码部署,但是我强烈要求使用此方法将代码“拉出”到远程服务器,因为它只使用内置function。
目前还不清楚您是否尝试自动化基础架构以及WCF服务部署。
代码部署
在Windows上有几种方法,虽然恐怕没有魔法答案,而且架构与Linux没有区别。 您使用的工具和Windows上可用的工具是差异所在。
1)安装一个SSH,SFTP,Telenet等,然后使用类似的方法,你现在在Linux上与批处理或PowerShell一起。 正如埃文·安德森(Evan Anderson)所说,由于Linux上提供的工具,这可能会让你觉得奇怪。
如果您使用过Java,那么generics过程也是一样的,即在部署之前需要构build代码,所有代码都可以使用批处理脚本或PowerShell实现自动化。
2)更具扩展性的方法是使用自动部署服务器,如Octopus(作为安装在部署目标上的代理)和可选的构build服务器(如Jenkins或Bamboo)。 随着你的代码驻留在一个代码仓库,如Git,你可以有持续的集成和部署,或者根据你的git仓库中的一个特定的分支进行手动自动化。
通用过程再次与Java或Linux上的其他语言相同。