60 個 DevOps 開源工具,你在用哪些?

發表於2016-03-17

你喜歡免費的東西嗎?獲得開發者社群支援的自動化,開源的工具是大家夢寐以求的。這裡列舉了 60 多款最棒的開源工具,可以幫助你很好的實行 DevOps。


一、開發工具

版本控制&協作開發

1.版本控制系統 Git

Git是一個開源的分散式版本控制系統,用以有效、高速的處理從很小到非常大的專案版本管理。

2.程式碼託管平臺 GitLab

GitLab是一個利用Ruby on Rails開發的開源應用程式,實現一個自託管的Git專案倉庫,可通過Web介面進行訪問公開的或者私人專案。

3.程式碼評審工具 Gerrit

Gerrit是一個免費、開放原始碼的程式碼審查軟體,使用網頁介面。利用網頁瀏覽器,同一個團隊的軟體程式設計師,可以相互審閱彼此修改後的程式程式碼,決定是否能夠提交,退回或者繼續修改。它使用Git作為底層版本控制系統。

4.版本控制系統 Mercurial

Mercurial是一種輕量級分散式版本控制系統,採用 Python 語言實現,易於學習和使用,擴充套件性強。

5.版本控制系統 Subversion

Subversion 是一個版本控制系統,相對於的RCS、CVS,採用了分支管理系統,它的設計目標就是取代CVS。網際網路上免費的版本控制服務多基於Subversion。

6.版本控制系統 Bazaar

Bazaar 是一個分散式的版本控制系統,它釋出在 GPL 許可協議之下,並可用於 Windows、GNU/Linux、Unix 以及 Mac OS 系統。

二、自動化構建和測試

1.Apache Ant

Apache Ant是一個將軟體編譯、測試、部署等步驟聯絡在一起加以自動化的一個工具,大多用於Java環境中的軟體開發。

2.Maven

Maven 除了以程式構建能力為特色之外,還提供 Ant 所缺少的高階專案管理工具。由於 Maven 的預設構建規則有較高的可重用性,所以常常用兩三行 Maven 構建指令碼就可以構建簡單的專案,而使用 Ant 則需要十幾行。事實上,由於 Maven 的面向專案的方法,許多 Apache Jakarta 專案現在使用 Maven,而且公司專案採用 Maven 的比例在持續增長。

3.Selenium (SeleniumHQ)

thoughtworks公司的一個整合測試的強大工具。

4.PyUnit

Python單元測試框架(The Python unit testing framework),簡稱為PyUnit, 是Kent Beck和Erich Gamma這兩位聰明的傢伙所設計的 JUnit 的Python版本。

5.QUnit

QUnit 是 jQuery 的單元測試框架。

6.JMeter

JMeter 是 Apache 組織的開放原始碼專案,它是功能和效能測試的工具,100% 的用 java 實現。

7.Gradle

Gradle 就是可以使用 Groovy 來書寫構建指令碼的構建系統,支援依賴管理和多專案,類似 Maven,但比之簡單輕便。

8.PHPUnit

PHPUnit 是一個輕量級的PHP測試框架。它是在PHP5下面對JUnit3系列版本的完整移植,是xUnit測試框架家族的一員(它們都基於模式先鋒Kent Beck的設計)。

三、持續整合&交付

1.Jenkins

Jenkins 的前身是 Hudson,它是一個可擴充套件的持續整合引擎。

2.Capistrano

Capistrano 是一個用來並行的在多臺機器上執行相同命令的工具,使用用來安裝一整批機器。它最初是被開發用來發布 Rails 應用的。

3.BuildBot

BuildBot 是一個系統的自動化編譯/測試周期最需要的軟體,以驗證程式碼的變化。通過自動重建和測試每次發生了變化的東西,在建設迅速查明之前,減少不必要的失敗。

4.Fabric

fabric8 是開源 Java Containers(JVMs) 深度管理整合平臺。有了 fabric8 可以非常方便的從 UI 和 UX 一致的中央位置進行自動操作,配置和管理。fabric8 同時提供一些非功能性需求,比如配置管理,服務發現故障轉移,集中化監控,自動化等等。

Tinderbox

5.Travis CI

Travis CI 是一個基於雲的持續整合專案, 目前已經支援大部分主流語言了,比如:C,PHP,Ruby,Python,Nodejs等等。

6.Continuum

Apache Continuum 是最新的 CI 伺服器之一,也是值得關注的一個新進入者。基於 Web 的介面使得配置專案很容易。而且,還不需要安裝 Web 伺服器,因為 Continuum 內建了 Jetty Web 伺服器。並且,Continuum 可以作為 Windows 服務執行,還在應用程式的某些部分嵌入了上下文敏感的文件,從而提供了很多幫助。

7.LuntBuild

LuntBuild 是一個強大自動構建的工具。通過一個簡潔的web介面就可以很容易地進行系統的持續構建。

8.CruiseControl

CruiseControl 是一個針對持續構建程式(專案持續整合)的框架,它包括一個email通知的外掛,Ant和各種各樣的CVS工具。CruiseControl提供了一個Web介面,可隨時檢視當前的編譯狀況和歷史狀況。

9.Integrity

Integrity 是 Ruby 開發的持續整合伺服器。

10.Gump

Gump 是 Apache 的整合工具。它以 Python 寫成、完全支援 Apache Ant、Apache Maven 等等軟體組建工具。

11.Go

Go 是 Google 開發的一種編譯型,併發型,並具有垃圾回收功能的程式語言。

四、部署工具

(一)容器平臺

1.Docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。

2.Rocket

Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 類似,幫助開發者打包應用和依賴包到可移植容器中,簡化搭環境等部署工作。

3.Ubuntu(LXC)

LXD 是 ubuntu 基於 LXC 技術的重構,容器天然支援非特權和分散式。LXD 與 Docker 的思路不同,Docker 是 PAAS,LXD 是 IAAS。LXC 專案由一個 Linux 核心補丁和一些 userspace 工具組成。這些 userspace 工具使用由補丁增加的核心新特性,提供一套簡化的工具來維護容器。

(二)配置管理

1.Chef

Chef 是一個系統整合框架,為整個架構提供配置管理功能。

2.Puppet

Puppet,您可以集中管理每一個重要方面,您的系統使用的是跨平臺的規範語言,管理所有的單獨的元素通常聚集在不同的檔案,如使用者, CRON作業,和主機一起顯然離散元素,如包裝,服務和檔案。

3.CFengine

Cfengine(配置引擎)是一種 Unix 管理工具,其目的是使簡單的管理的任務自動化,使困難的任務變得較容易。Cfengine 適用於管理各種環境,從一臺主機到上萬臺主機的機群均可使用。

4.Bash

Bash 是大多數Linux系統以及Mac OS X v10.4預設的shell,它能執行於大多數Unix風格的作業系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現windows的POSIX虛擬介面。此外,它也被DJGPP專案移植到了MS-DOS上。

5.Rudder

Rudder 已改名為Flannel,為每個使用 Kubernetes 的機器提供一個子網。也就是說 Kubernetes 叢集中的每個主機都有自己一個完整的子網,例如機器 A 和 B 可以有 10.0.1.0/24 和 10.0.2.0/24 子網。

Powershell 

6.RunDeck

RunDeck 是用 Java/Grails 寫的開源工具,幫助使用者在資料中心或者雲環境中自動化各種操作和流程。通過命令列或者web介面,使用者可以對任意數量的伺服器進行操作,大大降低了對伺服器自動化的門檻。

7.Saltstack

Saltstack 可以看做是func的增強版+Puppet的弱化版。使用Python編寫。非常好用,快速可以基於EPEL部署。Salt 是一個開源的工具用來管理你的基礎架構,可輕鬆管理成千上萬臺伺服器。

8.Ansible

Ansible 提供一種最簡單的方式用於釋出、管理和編排計算機系統的工具,你可在數分鐘內搞定。Ansible 是一個模型驅動的配置管理器,支援多節點發布、遠端任務執行。預設使用 SSH 進行遠端連線。無需在被管理節點上安裝附加軟體,可使用各種程式語言進行擴充套件。

(三)微服務平臺

1.OpenShift

OpenShift 是由紅帽推出的一款面向開源開發人員開放的平臺即服務(PaaS)。 OpenShift通過為開發人員提供在語言、框架和雲上的更多的選擇,使開發人員可以構建、測試、執行和管理他們的應用。

2.Cloud Foundry

Cloud Foundry 是VMware於2011年4月12日推出的業界第一個開源PaaS雲平臺,它支援多種框架、語言、執行時環境、雲平臺及應用服務,使開發人員能夠在幾秒鐘內進行應用程式的部署和擴充套件,無需擔心任何基礎架構的問題。

3.Kubernetes

Kubernetes 是來自 Google 雲平臺的開源容器叢集管理系統。基於 Docker 構建一個容器的排程服務。該系統可以自動在一個容器叢集中選擇一個工作容器供使用。其核心概念是 Container Pod。

4.Mesosphere

Apache Mesos 是一個叢集管理器,提供了有效的、跨分散式應用或框架的資源隔離和共享,可以執行Hadoop、MPI、Hypertable、Spark。

(四)服務開通

1.Puppet

Puppet,您可以集中管理每一個重要方面,您的系統使用的是跨平臺的規範語言,管理所有的單獨的元素通常聚集在不同的檔案,如使用者, CRON作業,和主機一起顯然離散元素,如包裝,服務和檔案。

Razor

2.Docker Swarm

Docker Swarm 是一個Dockerized化的分散式應用程式的本地叢集,它是在Machine所提供的功能的基礎上優化主機資源的利用率和容錯服務。具體來說,Docker Swarm支援使用者建立可執行Docker Daemon的主機資源池,然後在資源池中執行Docker容器。Docker Swarm可以管理工作負載並維護叢集狀態。

3.Vagrant

Vagrant 是一個基於 Ruby 的工具,用於建立和部署虛擬化開發環境。它使用 Oracle 的開源 VirtualBox 虛擬化系統,使用 Chef 建立自動化虛擬環境。

4.Powershell

5.OpenStack Heat

五、維護

日誌記錄

1.Logstash

Logstash 是一個應用程式日誌、事件的傳輸、處理、管理和搜尋的平臺。你可以用它來統一對應用程式日誌進行收集管理,提供 Web 介面用於查詢和統計。

2.CollectD

collectd 是一個守護(daemon)程式,用來收集系統效能和提供各種儲存方式來儲存不同值的機制。比如以RRD 檔案形式。

3.StatsD

StatsD 是一個簡單的網路守護程式,基於 Node.js 平臺,通過 UDP 或者 TCP 方式偵聽各種統計資訊,包括計數器和定時器,併傳送聚合資訊到後端服務,例如 Graphite。

六、監控,警告&分析

1.Nagios

Nagios 是一個監視系統執行狀態和網路資訊的監視系統。Nagios能監視所指定的本地或遠端主機以及服務,同時提供異常通知功能等。

2.Ganglia

Ganglia 是一個跨平臺可擴充套件的,高效能運算系統下的分散式監控系統,如叢集和網格。它是基於分層設計,它使用廣泛的技術,如XML資料代表,便攜資料傳輸,RRDtool用於資料儲存和視覺化。

3.Sensu

Sensu 是開源的監控框架。主要特性:高度可組合;提供一個監控代理,一個事件處理器和文件 APIs;為雲而設計;Sensu 的現代化架構允許監控大規模的動態基礎設施,能夠通過複雜的公共網路監控幾千個全球分散式的機器和服務;熱情的社群。

4.zabbix

zabbix 是一個基於Web介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。

5.ICINGA

ICINGA 專案是 由Michael Luebben、HendrikB?cker和JoergLinge等人發起的,他們都是現有的Nagios專案社群委員會的成員,他們承諾,新的開源專案將完全相容以前的Nagios應用程式及擴充套件功能。

6.Graphite

Graphite 是一個用於採集網站實時資訊並進行統計的開源專案,可用於採集多種網站服務執行狀態資訊。Graphite服務平均每分鐘有4800次更新操作。

7.Kibana

Kibana 是一個為 Logstash 和 ElasticSearch 提供的日誌分析的 Web 介面。可使用它對日誌進行高效的搜尋、視覺化、分析等各種操作。

以上,如果有其他補充可以在評論中跟大家分享哦!

相關文章