jenkins和ansible的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins和ansible的区别相关的知识,希望对你有一定的参考价值。

Jenkins + sonar 的系统,用来执行自动构建、自动部署、自动测试,代码质量评估的整套平台,用来做敏捷。
持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了。
后期应该搞单元测试,自动化测试,自动部署
做分布式,服务器集群的时候没有自动化工具是很难运转的!
参考技术A 下面将要介绍的完整流程是:
github作为源代码仓库

jenkins做为打包服务器,Web控制服务器
ansible把war包,发布到远程机器

supervisor托管app进程,提供一个web界面可以查看进程状态,日志,控制重启等。
安装python-pip
用pip安装supervisor
安装jdk
下载,部署tomcat
把tomcat交由supervisor托管
把jenkins生成的war包发布到远程服务器上
supervisor启动tomcat
在http端口等待tomcat启动成功
在文章的最后,会给出一个完整的docker镜像,大家可以自己运行查看实际效果。

Ansible 可以替代像 Hudson/Jenkins 这样的 CI 工具吗?

【中文标题】Ansible 可以替代像 Hudson/Jenkins 这样的 CI 工具吗?【英文标题】:Is Ansible a replacement for a CI tool like Hudson/Jenkins? 【发布时间】:2014-11-08 15:57:50 【问题描述】:

最近,在我们公司,我们决定使用 Ansible 进行部署和持续集成。但是当我开始使用 Ansible 时,我没有找到使用 Maven 构建 Java 项目的模块,或者用于运行 JUnit 测试或 JMeter 测试的模块。

所以,我处于怀疑状态:可能是我以错误的方式使用 Ansible。

当我查看 Jenkins 时,它可以执行构建、运行测试、部署等操作。 Hudson 中缺少的东西是在 AWS 等云环境中创建/删除实例。

那么,一般来说,我们需要出于什么目的使用 Ansible/Jenkins?对于 CI,我是否需要结合使用 Ansible 和 Jenkins?

请说明正确使用 Ansible。

【问题讨论】:

【参考方案1】:

Ansible 只是一个“美化的 SSH 循环”。 CI 不仅仅是软件运行,而是如何处理成功和失败,通知谁,以及如何将变更合并到目标版本控制的整个过程。

如果我们只关注软件,CI 是由代码更改触发的反应式调度程序,并触发典型的构建-验证-发布-部署“步骤”序列。

所以在软件方面,没有额外“加糖”的 Ansible 只是一个运行东西的工具包,可以是那些步骤,但它不是 CI。 Ansible(没有塔)完全没有这种反应性。

如果您想将 Ansible 与 CI 结合,您可以。

Ansible Tower 是一个非常面向 Ansible 的调度器,但是如果你需要 CI 软件,我认为你不一定需要它。任何能够运行 shell 脚本的 CI 应用程序都能够启动 Ansible playbook。

但与 Ansible 塔不同 - CI 工具知道显示所有测试框架的测试报告、触发通知等。

Ansible Tower 可以在有很多团队接触 Ansible 代码的复杂环境中发挥作用……事实上,我还没有看到一个真正的理由来为它付费。但是,如果经理喜欢 Web 界面,那么没有什么可以忍受“但其他人使用它”的逻辑。

我怀疑 Ansible Tower 的概念是为了回应傀儡企业。

:)

【讨论】:

更新:在某个时间点,RedHat 人员已经打开了 Tower 的一部分,现在有一个项目“AWX”。它可能可以用来实现 CI-ish 功能。【参考方案2】:

首先,Jenkins 和 Hudson 基本上是同一个项目。我将在下面将其称为 Jenkins。请参阅How to choose between Hudson and Jenkins?、Hudson vs Jenkins in 2012 和What is the most notable difference between Jenkins and Hudson from an user perpective? 了解更多信息。

其次,Ansible 并不是一个持续集成引擎。它(通常)不会轮询 git repos 并运行以正常方式失败的构建。

什么时候可以简单地使用 Jenkins?

如果您的机器环境和部署过程非常简单明了(例如在团队外部配置的 Heroku 或 Iron),Jenkins 可能就足够了。您可以编写一个自定义脚本,将部署作为最终构建步骤(或链接步骤)。

什么时候可以简单地使用 Ansible?

如果您只需要“部署”而不需要构建/测试,Ansible 可能就足够了。例如,您可以从命令行或使用 Ansible Tower 运行部署。这对于小型项目、静态网站等非常有用。

它们如何协同工作?

一个很好的组合是使用 Jenkins 来构建、测试和保存工件。添加一个步骤来调用 Ansible 或 Ansible Tower 来处理实际的部署过程。这允许 Ansible 处理 machine 配置并让 Jenkins 处理 CI 过程。

Jenkins 的替代品有哪些?

我强烈推荐 Thoughtworks Go(不要与 Go 语言混淆)而不是 Jenkins。其他包括 CruiseControl、TravisCI 和 Integrity。

【讨论】:

以上是关于jenkins和ansible的区别的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+Ansible+Gitlab自动化部署三剑客--ansible

Jenkins与Ansible的碰撞

ansible+jenkins+svn实现生产环境自动发布

Jenkins+Ansible+Gitlab自动化部署三剑客--Jenkins ansible集成

ansible+Jenkins+supervisor(Jenkins守护进程)

ansible+jenkins实现zabbix维护模式添加