1

我正在研究将产品的特定版本自动部署到特定 Azure 云服务或 VM 的方法。

以下步骤将是自动化的,尽可能少的人工干预:

  • 创建云服务或 VM
  • 安装产品的特定版本(作为独立的 exe 或 Windows 服务,而不是 IIS
  • 调整配置文件
  • 设置用户帐户
  • 运行exe/服务

该代码当前位于 Visual Studio Online / TFS 中。我们已经设置了 Cruise Control .NET CI,我们正在考虑迁移到 TeamCity。这将用于通常的 QA 和生产类型环境,但也用于临时部署,例如,如果产品中添加了试用功能,并且我们希望将其部署到新 VM 以供特定客户使用。理想情况下,我们将能够使用命令行或 UI 来选择构建、创建 VM 并指定任何配置更改。

一种可能的解决方案可能是Octopus Deploy,尽管我认为这不能真正创建 Azure VM。我可能还会查看 Azure API,以及 TFS 部署。

基本上这是可行的,为了缩小我的研究范围,我是否缺少任何经过验证的替代方案?

提前致谢!

4

4 回答 4

1

虽然 Octopus Deploy 可以做很多事情,但在您的这个特定场景中,您要求它执行三种类型的工作 - 发布管理、自动配置和配置管理。这是自动化令人敬畏和真正棘手的情况之间的一条细线。

在您提出的任务中,几乎所有这些任务都可以在今天的 Octopus 中完成。我认为创建云服务或虚拟机是可能的如果有一些 PowerShell cmdlet/库允许您通过身份验证启动虚拟机,那么您很可能可以使用 Octopus - 但它可能不是今天完成这项工作的正确工具。为什么?

在我看来,它扭曲了开发人员、DevOps 和系统管理员之间的障碍。无论您使用 Chef、Puppet、Salt 等,无论您拥有何种配置管理,都需要一整层具有专业知识的用户来支持它——通常说的系统专业知识是想要这种灵活性的开发人员可能不具备的。其次,目前这还不是 Octopus 的重点。我很难说是否使用诸如 Octopus 之类的工具来确定它可以做什么和不应该做什么。

很高兴 Azure 现在支持为 VM预安装 Octopus 触手。但这需要额外的信息,例如服务器指纹、端口等补充配置信息,以便自动配置虚拟机。那个配置管理——它应该在 Octopus 的控制之下,还是像 Chef 或 Puppet 这样的东西?老实说,我对此没有答案,但我现在的感觉不是章鱼。也许有一天,但在它真正准备好并经过全面测试和审查之前,我至少会在 Octopus 上等待它(稍微)。

如果你是喜欢冒险的人,那么一定要试试八达通。我可能会在今年晚些时候对这种基础设施自动化进行 PoC(概念验证),但是今天依赖它作为基础设施自动化的主要手段用于业务/生产用途将是有风险的,并且需要大量的工作和实验。同样,我并不是说它不能完成,我质疑是否应该在今天的回复中在 Octopus 内完成。

如果有的话,从 Octopus Deploy 的角度来看,这是否可行?是的——只是还没有完全解决。看看你想要做什么,我会说这是一个两阶段的过程:1. 启动新 VM,将触手附加到环境和 2. 在新 VM 上运行部署过程。

我还建议您查看 Octopus 博客。他们公开谈论基础设施自动化。你可以在这里阅读:http: //octopusdeploy.com/blog/rfc-cloud-and-infrastructure-automation-support

我希望这个回应在某种程度上有所帮助。

于 2015-02-23T00:04:35.143 回答
1

Azure 中自动部署的解决方案是使用 ElasticBox。

我将跳过 ElasticBox 支持的 Azure 的所有配置选项的详细信息,因为它们在文档部分中有详细说明:http: //elasticbox.com/documentation/deploying-and-managing-instances/using-azure/

您只需要创建一个盒子(ElasticBox 用来定义在任何云中部署服务或应用程序的安装和配置的抽象单元)来处理您需要自动化的步骤。因此,最终您将部署虚拟机,几乎无需人工干预,只需单击一下或使用带有一些参数的命令。

一个框包含部署和脚本所需的变量(在这种情况下可能是 PowerShell,但它们可能是 bash、python、perl、java 等)

当您部署您创建的用于部署应用程序的盒子时,ElasticBox 将:

  • 创建云服务或 VM。(ElasticBox 负责在您的 Azure 提供商或您首选的任何云提供商中配置 vm)。

  • 安装产品的特定版本(作为独立的 exe 或 Windows 服务,而不是 IIS)-> 这应该是您的安装事件脚本。

  • 调整配置文件-> 这应该是您的配置事件脚本的一部分。

  • 设置用户帐户-> 这应该是您的配置事件脚本的一部分。

  • 运行 exe/service -> 这应该是你的启动事件脚本的一部分。

ElasticBox 有一个命令行工具,可以对你的盒子进行虚拟机部署,你也可以用它管理你部署的虚拟机:https ://pypi.python.org/pypi/ebcli

它还支持在自定义时间值后自动终止 vm。

于 2015-05-27T13:45:23.947 回答
0

这是一个相当广泛的问题,但当然可以通过多种方法中的一种来实现目标。虽然有点老,但Tom Hollander 的关于自动化部署的博客是一个很好的起点。我见过很多 OctopusDeploy 和 TeamCity 一样使用,但它们最终都依赖于Azure 的 PowerShell Cmdlet、自定义代码中的管理库或纯 REST API调用。

于 2015-01-29T22:21:15.227 回答
0

仅供参考;一种选择是使用 Azure 管理 API 完成所有操作。我还喜欢在 VS 项目中引用 Azure 客户端库,一切都是 C# 代码。

于 2015-05-27T14:31:02.227 回答