导语:
如果现在从事运维同学在交流中不提及“DevOps”的话,会让人感觉非常的Low?但是DevOps一种概念、一种思想,很难界定说DevOps该做什么,不该做什么。百度中给出的定义是Development和Operations的组合,但是每个公司或者个人在实际的应用中对DevOps的看法和理解都是不一样,所以本文只是概括总结常见的DevOps的工具,至于具体到项目的采用的工具,需要根据实际的情况进行考虑。
运维工程师们赶快来了解学习下吧!
1.开发工具.版本控制&协作开发
Github
gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git作为唯一的版本库格式进行托管,故名gitHub。Github拥有超过900万开发者用户,外号“全球最大同性交流网站”。
Subversion
Subversion 是一个版本控制系统,Subversion是一个自由开源的版本控制系统,是近年来崛起的版本管理软件系统,是CVS的接班人。目前,绝大多数开源软件都使用SVN作为代码版本管理软件。
2.自动化构建和测试
Apache Ant
Apache Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。
Maven
Maven 除了以程序构建能力为特色之外,还提供 Ant 所缺少的高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目现在使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Gradle
Gradle 就是可以使用 Groovy 来书写构建脚本的构建系统,支持依赖管理和多项目,类似 Maven,但比之简单轻便。
Selenium
Selenium (SeleniumHQ) 是 thoughtworks公司的一个集成测试的强大工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
QUnit
QUnit是一个强大的JavaScript单元测试框架,该框架是由jQuery团队的成员所开发,并且是jQuery的官方测试套件。Qunit是Jquery的单元测试框架,并且被广泛使用在各个项目中。
JMeter
JMeter 是 Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用 java实现,对于大多数初学测试的同学来说,是最佳入门的工具。
3. 持续集成&交付
Jenkins
Jenkins 的前身是 Hudson,是基于Java开发开发的一种持续集成工具 。目前来说,是应用最为广泛的DevOps工具。
Fabric
fabric8 是开源 Java Containers(JVMs) 深度管理集成平台。有了 fabric8 可以非常方便的从 UI 和 UX 一致的中央位置进行自动操作,配置和管理。fabric8 同时提供一些非功能性需求,比如配置管理,服务发现故障转移,集中化监控,自动化等等。
Travis CI
Travis CI 是一个基于云的持续集成项目, 目前已经支持大部分主流语言了,比如:C,PHP,Ruby,Python, Nodejs等等。
CodePipeline
CodePipeline是阿里云基于Jenkins的基础之上,进行二次优化开发的续集成与持续交付工具。主要是对使用阿里云相关产品的进行业务结合。
4. 部署工具
4.1 容器平台
Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Rocket
Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 类似,帮助开发者打包应用和依赖包到可移植容器中,简化搭环境等部署工作。
4.2 配置管理
Chef
Chef 是一个系统集成框架,为整个架构提供配置管理功能。
Puppet
Puppet,您可以集中管理每一个重要方面,您的系统使用的是跨平台的规范语言,管理所有的单独的元素通常聚集在不同的文件,如用户, CRON作业,和主机一起显然离散元素,如包装,服务和文件。
Bash
bash 是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
Saltstack
Saltstack 可以看做是func的增强版+Puppet的弱化版。使用Python编写。非常好用,快速可以基于EPEL部署。Salt 是一个开源的工具用来管理你的基础架构,可轻松管理成千上万台服务器。
Ansible
Ansible 提供一种最简单的方式用于发布、管理和编排计算机系统的工具,你可在数分钟内搞定。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。
4.3 微服务平台
OpenShift
OpenShift 是由红帽推出的一款面向开源开发人员开放的平台即服务(PaaS)。 OpenShift通过为开发人员提供在语言、框架和云上的更多的选择,使开发人员可以构建、测试、运行和管理他们的应用。
Cloud Foundry
Cloud Foundry 是VMware于2011年4月12日推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发 人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。
Kubernetes
Kubernetes 是来自 Google 云平台的开源容器集群管理系统。基于 Docker 构建一个容器的调度服务。该系统可以自动在一个容器集群中选择一个工作容器供使用。其核心概念是 Container Pod。
Mesosphere
Apache Mesos 是一个集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、MPI、Hypertable、Spark。
5.维护
日志记录
Logstash
Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
6. 监控报警&分析
Nagios
Nagios 是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
Zabbix
Zabbix 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
Kibana
Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。