首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部署自动化

部署自动化
EN

Stack Overflow用户
提问于 2013-03-17 21:05:58
回答 4查看 2.2K关注 0票数 6

我有一个Lift应用程序,它被打包成一个WAR存档,必须在Jetty下部署。但是,我希望能够自动执行一些任务:

  • 指定目标服务器(或服务器集合)。我有多个服务器,从开发到测试和生产服务器,我希望能够非常轻松地控制部署的目的地。
  • 目标(例如开发)可能意味着一组服务器,用于负载平衡。
  • 测试阶段。基本上,对于每个部署,如果应用程序没有编译,或者一个或多个测试失败,我希望运行整个测试集并阻止部署。
  • WAR存档必须部署在Jetty下,同样部署在运行Linux的一个或多个亚马逊EC2机器上。(Ubuntu12.10)

我正在使用SBT,我不知道这将如何发挥木偶或类似的东西。你会怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-19 14:43:13

我一直在看这个问题,希望有人能想出一个聪明的答案。既然他们没有,我想我会在这件事上融入我自己的感情。

据我所知,没有任何工具可以自动化这些类型的部署,我认为这是因为有太多不同的场景需要处理。至少,你有:

  1. 一个开发服务器,它只是复制WAR到位,然后重新启动应用服务器。
  2. 一个单一的生产服务器,其中的进程是相似的,但您不希望流程干扰您的用户。这里的注意事项包括在重新启动期间保留会话数据,以及在低使用率的情况下计划重新启动一段时间。
  3. 一个小集群,您在其中有一个负载均衡器在许多节点。现在事情变得很复杂了。您可以使用各种不同的LB工具(HA Proxy、NGINX、Amazon的Elastic ),如果您关心用户体验,则需要协调应用服务器的滚动重新启动。在节点之间迁移任何会话数据也是一个问题。
  4. 您有一个由不同地理区域中较小的集群组成的大型集群。在这里,您将处理#3 +所需的任何配置,以便在区域之间进行协调。

我想1和2是最容易找到通用工具的,如果这是我唯一需要处理的情况,我可能会把Jenkins和应用一起部署。当发生更改时,可以很容易地将其配置为从git分支中提取,生成代码并重新启动Jetty。但是,当您达到3&4时,我认为所涉及的不同工具的数量以及协调它们的需要已经排除了任何类型的标准解决方案。我不认为这仅仅是Java/Scala世界中的一个问题,因为我已经看到Github的人在他们为管理Rails应用程序的部署而构建的定制工具上编写了一些文章。

至于木偶,尽管我从未使用过它,但它似乎是这类过程的有用工具。您将需要某种类型的中央协调器来处理集群,我相信木偶可以在这方面提供帮助。

票数 5
EN

Stack Overflow用户

发布于 2013-04-29 16:27:07

您可以使用我们的产品BuildMaster来完成所有这些事情。我注意到您提到了Puppet,注意这个工具是为基础设施自动化而设计的,而不是用于软件部署和交付。

在DevOps空间中工作,我们发现通过团队协作保持软件和基础设施部署的正交性和同步性是很重要的(开发人员不是操作人员,反之亦然)。

为了说明你的要点:

部署到多个服务器

在创建自动部署计划时,可以指定服务器组,并在必要时从组中添加/删除服务器。

测试阶段

在生产之前,您可以使用任意数量的测试环境来设置工作流,并且这些工作流可以包括自动检查(即升级要求),以便在允许将构建提升到下一个环境之前通过测试。内置测试是为了确保传递单元测试,但您可以为任何命令行工具输出指定它们,甚至可以编写自定义扩展。

码头部署

复制WAR文件就像使用SSH代理将工件部署到服务器一样简单。

票数 1
EN

Stack Overflow用户

发布于 2013-03-20 22:16:05

我也看过这个问题。

实际上,你也有同样的感觉:你不能考虑所有可能的环境,框架只允许你选择你想要的。因此,使用任何愉快的部署工具,只需使用它。

(当然,SBT允许您进行测试,防止打包,还有许多部署工具具有战争和抛弃知识。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15466239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档