1.3 DevOps工具链

以下是业界在DevOps工具链方面的经典实践https://www.quora.com/What-are-the-best-tools-to-learn-DevOps-How-to-start-DevOps。,在使用时可以参考。

本节只简单列举一些主流的DevOps工具(如图1-3所示),在本书的后续章节,会对部分工具进行详细阐述。

图1-3 DevOps工具链

(1)Git

Git是一个自由且开源的分布式版本控制管理系统,功能丰富、性能出众,但又十分轻量,可扩展性非常好。轻量“廉价”的分支管理使其非常适合于敏捷开发,能及时响应需求和变化,开发人员可以在多任务之间轻松切换。

(2)JIRA

JIRA是项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA提供了一系列敏捷工具,如Scrum和Kanban。

(3)Maven

Maven是一个项目管理和自动构建工具。它强调构建过程中的两个重要方面:如何构建和描述依赖关系。在实际使用中还可以通过一系列的插件来扩展各个阶段的流程。由于Maven包含许多重用性很强的默认规则,往往几行代码就可以完成一个项目的构建。Maven通常用来管理Java项目,但也可以用于管理C#、Ruby、Scala等其他项目。

(4)JUnit

JUnit是一个Java语言的单元测试框架。多数Java开发环境都已经集成了JUnit作为单元测试的工具。JUnit是一套框架,使用比较简单,只要继承TestCase类,就可以用JUnit进行自动测试了。

(5)Jenkins

Jenkins是基于Java开发的一款开源的持续集成工具,用于代替人工进行重复的持续集成工作,同时也为促进持续交付提供技术支撑。它支持各种版本控制工具,如CVS、Git、ClearCase等,并且可以与多种构建工具进行集成,如Ant、Maven,甚至有自定义的Shell脚本。Jenkins是开发和部署连接的纽带,社区活跃,有大量的插件来扩展其功能,是实现自动化的关键。

(6)Puppet

Puppet是一款集中配置管理工具,使用自定义的DSL描述语言,可管理配置文件、cron任务、软件包、系统服务等。Puppet采用C/S结构,每个客户端周期性(默认半个小时)地向服务器发送请求,获得其最新的配置信息,保证系统和该配置信息同步。

(7)Ansible

Ansible是一款新出现的自动化运维工具,基于Python开发,有批量配置、部署、运行命令、编排复杂任务等功能。与其他自动化运维工具的显著不同在于它只需使用SSH服务(SSH可以说是各种Linux服务器的基本服务),它不需要在被管理节点上安装组件或代理。Ansible本身提供了上千种Module可供使用。

(8)Nagios

Nagios是一款开源的网络监视工具,能有效监控Windows、Linux和UNIX等各种主机、交换机、路由器等网络设备。在系统或服务状态异常时可以发出邮件或短信报警,第一时间通知运维人员。