我在寻找解决方案,最好是开源的,可以管理多个相互依存的Java Web应用程序的部署。
该解决方案需要创建和存储包含用于释放多个物品的释放规范的能力-每个应用程序的特定版本和相关的其他伪影(数据库配置,apache配置等)。
然后该规范需要分析每个项目然后需要部署/在目标环境中执行。 目标环境是基于Linux。 网络应用程序是一个J2EE标准的应用服务器上运行的香草大战。
很多用问吗?
目前,我认为所有的位都很到位-二进制文物都使用Maven插件发布 ,因此可从我们的Maven回购部署发布, 数据库版本与dbdeploy和Apache的配置在SVN版本。 但是我不知道任何工具,可以把所有这些步骤一起上的多个应用程序。
我现在的首选方法是使用参数化构建的一种形式哈德森以创建规范。 然后将第二参数化的构建以选择预创建的规格及部署/执行它上的所选环境。
然而,这似乎是一个大量的工作,不是最优的定制解决方案少。
任何人都知道任何预置的更好的想法? 或为如何处理这个建议 - 也许一个工作流引擎会比哈德森更好吗? 也许一个自定义的Web应用程序?
笔记:
目标环境是预置在地方的所有要求 - 例如,Java和安装的应用程序服务器,运行的数据库等,这是更小的环境配置问题,更部署问题。
单一的自动化应用程序的部署与许多解决方案的问题如货物,蚂蚁部署脚本等,但我需要的东西,可以换多个部署。 例如开球货物上的多个应用程序及其要求的特定版本。
谷氨酸似乎是自动化部署一个非常不错的选择。 从它的网站介绍:
什么是谷氨酸?
谷氨酸是一个自由/开源部署和监控自动化平台。
哪些问题不解决的Glu?
谷氨酸是解决以下问题:
- 部署(和监测)应用到任意的大集合的节点:
- 有效率的
- 最小/没有人的交互
- 安全
- 以可重复的方式
- 确保一致性随时间(防止漂移)
- 检测和故障时迅速出现问题
它是如何工作的?
谷氨酸把你想要的东西很声明的方式,在其中描述/模型,和Glu可以:
- 计算出一套行动部署/升级应用
- 确保它在时间上保持一致
- 检测并提醒您,当存在不匹配
它是由颜Pujante维护,起源于LinkedIn其用它的内部。
由于这老线程首先出现在谷歌搜索我想补充一个新的选择:
Ansible通过SSH执行命令,这是非常容易安装和使用。 只需要几个小时才能理解的概念,并开始编写自己的任务。
从网站摘录:
除了不需要任何守护程序或引导,Ansible的剧本语言是最简单的系统管理语言在那里。 它读起来就像英语。 我们相信你有其他的工作要做,所以我们希望你做事情很快,走出自己的方式。
退房ControlTier的基础上,配置管理数据库(CMDB)存储库的目标是成为自动化多层和分布式应用服务的部署和管理一个完整的企业级系统的开源部署工具。 据其网站 :
ControlTier是用来协调跨多个节点和应用层的应用服务管理活动的一个社区驱动的,跨平台的软件系统。 该项目是完全开源的,很多都来自DTO解决方案正在进行的咨询工作为大型电子商务项目的贡献,软件作为一种服务,和金融服务业务。 转到安装来下载和安装该软件。
替代文字http://controltier.org/mediawiki/images/d/d2/ControlTier_HighLevel.png
部署是一个复杂的业务。 Maven有很多,你可以需要管理部署的插件,但它需要一些配置,以得到它做你想要什么。 下面介绍如何您的每一个问题可以得到解决。 虽然根据您的环境,比它的价值可能就比较麻烦了。
该行家货物插件可用于部署应用程序。 显然,这可能是相当棘手的,但货物是用于管理部署的一个很好的工具。
Apache的配置可以被打包为您的构建过程中单独的jar并将其部署到仓库,然后下载/出版了部署罐子使用(该依赖插件可以用来拉从存储库中配置的jar)。 另外Maven有可用于调用任意命令对SCM存储库(见的SCM API 这个答案的一个例子使用SCM API插件。
据我所知,没有一个Maven插件dbdeploy,但这个博客文章显示了如何Maven的antrun-插件可用于脚本部署。
我已经非常类似的要求。 专注于应用程序的部署,而不是环境的部署,似乎http://www.kwatee.net/product非常适合!
- Web界面来创建/配置和控制部署
- 多平台部署支持
- 版本管理,增量更新部署
- 在需要时使用计划的shell命令
- 质地轻盈,易于使用的理解和管理
我的建议是使用工具的组合(关注点分离,为正确解决问题的正确工具),这将有助于你完成你的目标,让我提一些我使用的国家:
- SVN或GIT中(SCM)
- Maven的(软件项目管理和comprehesion工具)
- 詹金斯(创建/触发您的CI和CD过程)
- Artifactory的插件: https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin (促进你的文物,artifactory的,并能释放文物[ https://wiki.jenkins-ci.org/display / JENKINS /詹金斯+ Artifactory的+插件+ - +发布+管理] )
- Rundeck插件: https://wiki.jenkins-ci.org/display/JENKINS/RunDeck+Plugin (要集成詹金斯与Rundeck)
- 建立流水线插件: https://wiki.jenkins-ci.org/display/JENKINS/Build+Pipeline+Plugin (要创建您传递管道)
- Artifactory的http://www.jfrog.com/open-source/ (要存储快照和您的工件的版本)
- Rundeck http://rundeck.org/ (要打开自助服务岗位的操作规程)
除了上面提到的工具,还有其他的,可以是有益的,你可以根据你的项目需要使用它们: http://www.oracle.com/technetwork/articles/java/deployment-tools-2227133.html
现在谈论这个问题。 我注意到的第一件事情是,你提到你已经在你释放神器在你的仓库管理器(比如Artifactory的),所以我们需要做的下一步是在同一时间来协调这些文物的部署方式,我认为一个选项是使用Paremeterized生成( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build ,在这里你需要定义将包含不同版本所需的器物多个参数部署,一旦用户填写这些价值观,我们将用它们来作为参数传递给一个rundeck作业(rundeck是一个工具,可以帮助您协调中的不同节点的任务),这rundeck部署主作业将接收参数,并编排您的工件的部署,一个rundeck工作将包含的步骤是一些例子:停止你的集装箱,备份当前组件,开始您的集装箱,从仓库管理器下载您的工件,创建资源我 n您的集装箱,部署你的组件在你的容器,执行你的数据库部署,如果过程失败,发送电子邮件等。通常每一个步骤都是子作业(也接收参数),并在年底,我们创建一个使用/协调所有这些子作业主作业。
让我补充这种类型的CD过程中的一些图像的例子。 这个例子仅仅是在部署WAR /耳文物,但它可以帮助你看到大图片:
https://drive.google.com/folderview?id=0B-FVAopZZjDWdGl0WlNjX1RnRDQ&usp=sharing
我希望这可以帮助。
看起来像Apache的王牌将解决您的问题,像白羊座一些其他的工具。 ACE跟踪依赖。 你可以整理你的功能,并形成一个分布。 然后,您可以选择在其配送需要部署的目标。 它提供的RESTful API也。
Apache的ACE
Apache的ACE是一个软件分发框架,使您可以集中管理和分发软件组件,配置数据等文物到目标系统。 它是使用OSGi建成,可以在不同的拓扑结构进行部署。 目标系统通常也基于OSGi,但不必须。
http://ace.apache.org/