開源的工具是大家夢寐以求的。這里列舉了多款最棒的開源工具,可以很好的實行 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。
二、自動化構建和測試
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.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 同時提供一些非功能性需求,比如配置管理,服務發現故障轉移,集中化監控,自動化等等。
5.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.RunDeck
RunDeck 是用 Java/Grails 寫的開源工具,幫助用戶在數據中心或者雲環境中自動化各種操作和流程。通過命令行或者web界面,用戶可以對任意數量的服務器進行操作,大大降低了對服務器自動化的門檻。
6.Saltstack
Saltstack 可以看做是func的增強版+Puppet的弱化版。使用Python編寫。非常好用,快速可以基於EPEL部署。Salt 是一個開源的工具用來管理你的基礎架構,可輕松管理成千上萬台服務器。
7.Ansible
Ansible 提供一種最簡單的方式用於發布、管理和編排計算機系統的工具,你可在數分鍾內搞定。Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用 SSH 進行遠程連接。無需在被管理節點上安裝附加軟件,可使用各種編程語言進行擴展。
五、維護
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.zabbix
zabbix 是一個基於Web界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
4.Kibana
Kibana 是一個為 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它對日志進行高效的搜索、可視化、分析等各種操作。