15個私有云上的 DevOps 開源工具

原文:http://www.sohu.com/a/136276885_262549python

在可維護性,可靠性,效率和安全性方面,DevOps 爲私有云在改進操做流程方面發揮着重要的做用。私有云是一個由許多硬件和軟件組件組成的複雜系統。nginx

對於任何支持的企業組織,操做流程的自動化和文檔記錄,規劃變動和跟蹤應用的更新都是強制性的要求。web

一樣的方法也適用於雲計算的工做負載量。此外DevOps的實踐也成爲開發者和 QA 團隊事實上的標準,特別是當使用私有云做爲開發或目標平臺時。固然,並非全部的雲操做方面均可以用 DevOps 來實踐。數據庫

例如,許多硬件相關的操做不匹配--你不能用一個軟件工具,去物理的鏈接服務器上的硬件開關(本人注:服務器的 IPMI 是能夠作到遠程控制呀。)安全

但即便在這種狀況下,你仍可以使用 DevOps 工具和實踐來驗證連通性和記錄網絡配置過程。也爲不斷增加的軟件定義網絡(SDN)的需求提供了一個機會,讓 DevOps 在新的領域得以發展。服務器

咱們將回顧私有云幾種類別上的15個DevOps 工具網絡

在這篇文章中,咱們將在幾個類別中討論15個針對私有云的 DevOps 工具。這幾些工具類別的分選主要是人爲合成的,在由工具提供的功能之間沒有嚴格的邊界,而且在某些狀況下,這裏所提到的工具能夠作更多範疇假設。架構

最後,這裏的一些工具沒有根據具體的規則去分類,因此若是咱們忘記了你認爲應該包括的工具,只需給咱們發個消息,咱們將會討論這個工具,並在下一次綜述時將其歸入其中。併發

DevOps Tools

1. 配置管理工具(Configuration management tools)框架

配置管理工具自動完成平常操做,系統管理任務,當創建複雜的系統時,最大限度地減小人爲錯誤。配置管理工具容許你定義的配置做爲代碼。(「Infrastructure as a code」 的方式)。

它可讓你追蹤配置基線之間的變化(又稱爲配置版本控制),有效的應用它們並在必要時進行回滾更改操做。此外操做流程,如部署或發佈管理能夠記錄並驗證。

使用案例:私有云初始化部署和配置,將更改應用到私有云,應用具體的部署和配置。

1.1 Chef

Chef的配置文件使用領域專用語言(DSL)的「配方」(以.rb 爲文件擴展名)。多個配方也能夠整合到一個菜譜(cookbook)中。該配方定義了資源及其狀態,例如:應該安裝的軟件包,該文件應存在,服務應該運行,等等。

Chef 驗證全部定義的資源是否應具備指定的狀態,若是必要,任何資源的實際狀態若是與指定的狀態不一樣,那麼則應用更改。這容許你寫冪等的配方,意味着你能夠屢次應用相同的配方,若是全部定義的資源都具備指定的狀態,那麼 Chef 將不會更改任何內容。

Chef 能夠在 服務器/客戶端 模式中使用,也可在獨立的模式下運行。在任何狀況下,Chef 應安裝要配置的節點或VM上。

Chef 客戶端是用 Ruby 語言編寫的,Chef 服務器是用 Ruby 和 Erlang 語言編寫的。許可:2.7版本之後的使用 Apache License,以前版本使用 GNU General Public License。

Chef 菜譜的示例:

include_recipe "apt" package 'nginx' do action :install end service 'nginx' do action [ :enable, :start ] end

1.2 Puppet

Puppet的配置文件使用特殊的領域專用語言,它們被稱爲 Puppet 清單(以.pp 爲文件擴展名)。Puppet 可使用獨立的模式或者 服務器/客戶端 模式。Puppet 客戶端(agent)應該安裝要配置的每一個節點或VM上。

Puppet 客戶端 經過一個名爲 Facter 的工具收集 Puppet 服務器上的配置更改要求,並生成特定與服務器的目錄,其應用的配置更改都會記錄下來。

Puppet 能夠用來配置 類 unix 系統或 Windows 節點/虛擬機。

Puppet 是用Ruby 語言編寫。許可:Apache License.

Puppet 清單 的示例:

service { 'nginx': ensure => running, enable => true, }

1.3 Ansible

Absible使用 模塊(Modules)來定義配置任務。模塊能夠用標準腳本語言(Python,Bash,Ruby,等等)編寫,這是一個很好的作法,使每一個模塊冪等。Ansible 劇本(YAML語言編寫)角色映射到 節點/虛擬機上,以對這些節點/虛擬機 進行編排有序的執行。

Ansible 支持 ad-hoc 任務:管理任務(沒必要冪等)以在多個節點/虛擬機上執行。Ansible具備無代理架構:你不須要在配置的節點/虛擬機上安裝Ansible(然而,這些節點必須安裝 python 環境),Ansible 經過SSH或者經過 PowerShell(Windows 機器)從單個控制機器上配置管理節點/虛擬機,而且可以支持並行配置多個節點。

Ansible 能夠用來配置類 unix 系統或 Windows 節點/虛擬機。

Ansible 使用 Python 語言編寫。許可:GNU General Public License.

Ansible playbook 示例:

- name: Install nginx yum: name=nginx state=present- name: restart nginx service: name=nginx state=restarted enabled=yes

1.4 Salt

Salt(又叫SaltStack)同時支持服務器/客戶端 和無代理模式。在後一種狀況下,Salt 使用SSH鏈接到受管理的節點/虛擬機。Salt 使用以Python編寫的執行模塊,其中包含函數以定義配置任務。另外 Salt 支持 ad-hoc 命令。Salt 狀態文件(以.sls 爲文件擴展名)以 YAML 格式定義冪等任務。

Salt 使用 Python 語言編寫。許可:Apache License.

Salt 狀態描述文件示例:

nginx: pkg.installed

2. 裸機配置工具(Bare-metal provisioning tools)

裸機配置工具從中心服務器基於網絡的操做系統自動安裝。

使用案例:在私有云的初始部署期間提供新的裸機,增長新的裸機服務器,裸機配置做爲私有云的服務。

2.1 Cobbler

Cobbler 使用 DHCP 服務器來處理引導服務器並將其引導到TFTP服務器,在那裏它能夠下載做爲PXE引導文件和帶有操做系統的可引導映像。

而後 Cobbler 使用 Linux 的 Kickstart(用於基於Red Hat的操做系統)或Pressed(用於基於Debian的操做系統)安裝方法進行無人值守的操做系統安裝和配置。

由配置文件來自定義要配置的系統,Cobbler 支持多個配置文件。一旦節點被配置,Cobbler 應確保該節點被引導到預配置的操做系統而不是PXE。Cobbler 包含 命令行客戶端和 Web 客戶端。

Cobbler 使用 Python 語言編寫。許可:GNU General Public License。

2.2 Ironic

Ironic是一個OpenStack項目,它使用PXE配置裸機服務器和 IPMI以打開/關閉機器。Ironic 包含 Ansible Playbooks(bifrost項目),以獨立模式安裝和運行 Ironic,無需其它 OpenStack 組件。Ironic 還包含命令行客戶端和 Web 客戶端。

Ironic 使用 Python 語言編寫。License:GNU Affero General Public License。

3. 編排工具(Orchestration tools)

編排做爲配置工具的元級。

使用方案:初始化部署和配置私有云,自動擴展。

3.1 MCollective

MCollective是構建服務器編排和並行工做執行系統的框架,而不是一個工具。MCollective 支持分散庫存和自動發現。

MCollective 服務端 應安裝在 被管理節點/虛擬機,而 MCollective 客戶端應安裝在控制機上。MCollective 使用代理插件來擴展其功能。

MCollective 服務器和客戶端不直接通訊,而是在發佈/訂閱模式中使用中間件系統(一般是RabbitMQ)。這容許 MCollective 客戶端向 MCollective 服務器發送廣播請求,也支持直接請求/回覆。

MCollective 使用Ruby語言編寫. 許可:Apache License。

3.2 Juju

Juju 容許你將複雜的應用程序部署到多個雲平臺和裸機服務器上。Juju 使用 charms 來定義代理的行爲,charm hooks 是要執行的實際任務(如:安裝軟件,啓動或中止服務等)。

Charms 還定義了與其它 charms 的關係。Charm hooks 能夠用任何語言來實現。還有配置管理工具,如Ansible,Chef,Puppet 能夠在 hook 裏面作服務器配置管理。

Charm bundle 容許你將一組 charms,它們的屬性和關係導出到 YAML 文件中。而後,這個 bundle 能夠導入到另外一個 Juju 環境中,以準確的部署已部署的應用程序。Juju 包含 命令行客戶端和web客戶端。

Juju 使用 Go 語言編寫。許可:GNU Affero General Public License, GNU Lesser General Public License

3.3 Apache Brooklyn

Apache Brooklyn容許你使用基於策略的自動化來建模,監控和管理應用程序。對於建模,Apache Brooklyn 使用藍圖(blueprint)的概念,它根據組件、配置、關係和部署場景來定義應用程序。藍圖使用 YAML 文件編寫。

Apache Brooklyn 支持許多應用程序,開箱即用。並具備 Web UI 來部署,監視和管理應用程序。此外,Apache Brooklyn 支持許多位置部署,包括雲平臺和現有節點。

相同的藍圖能夠用於將應用程序部署到不一樣的位置。Policies 根據應用程序傳感器的讀數定義對應用程序的無人值守更改。

Apache Brooklyn 使用 Java, Java, Groovy 語言編寫。許可: Apache License.

3.4 Cloudify

Cloudify容許你在 YAML 文件中定義應用程序配置、服務和依賴關係。這樣的文件稱爲藍圖。Cloudify 採用藍圖做爲輸入,能夠部署和管理應用程序。

Cloudify 支持多種雲計算平臺和虛擬化環境。藍圖還定義了應用程序的生命週期。對於應用程序部署階段,Cloudify 支持配置管理工具,如Chef和Puppet。

Cloudify 使用 Python 語言編寫。許可:Apache License。

3.5 Docker Machine

Docker Machine 是一個工具,它容許你在提供的節點上安裝 Docker(見下文),以後能夠遠程的管理這樣的節點。

Docker Machine 使用Go語言編寫。許可:Apache License。

4. 持續集成工具 (Continuous integration tools)

使用案例:從開發到生產,在內部雲開發、安裝和應用程序運行的統一平臺 。

4.1 Jenkins

Jenkins是一個具備許多插件的自動化服務器。用於構建,測試和自動化部署應用程序。一般Jenkins用做軟件開發的 CI/CD 工具。Jenkins 的做業(構建)能夠由各類觸發器啓動。例如提交代碼到版本控制系統,按計劃事件,經過訪問特定 URL 構建或者在完成其它構建以後進行觸發。

Jenkins 使用 Java 語言編寫. 許可:MIT License.

4.2 Docker

Docker容許你將具備全部依賴關係的應用程序軟件打包到容器中,這能夠很輕鬆的部署在基於 Linux 的平臺上。在非 Linux 平臺上 Docker 使用一個虛擬機來運行容器。

Docker 使用 Go 語言編寫。 許可:Apache License 2.0。

5. 監控和日誌記錄(Monitoring and logging)

使用案例:從私有云服務和應用程序整合日誌,監控分佈式服務和應用程序。

5.1 Zabbix

Zabbix 是一個爲應用服務,網絡服務和硬件監控提供的解決方案。Zabbix 將收集的數據存儲在關係數據庫中,如 MySQL,PostgreSQL 等。Zabbix 容許你監控簡單的服務,如 HTTP 服務。

Zabbix agent 端能夠安裝在 Windows 和 類 Unix 服務器上,用來檢視系統參數,如 CPU 負載,內存和磁盤利用率等。

另外,agent 可用於監視標準服務和自定義應用程序。Zabbix 也支持經過 SNMP、SSH 等方式,無需在要監視的服務器上安裝代理。

Zabbix 使用 C, PHP,Java 語言編寫。許可: GNU General Public License version 2。

5.2 Elasticsearch, Logstash, Kibana (ELK)

ELK是 Elasticsearch,Logstash,Kibana 軟件的組合,它是用於記錄,日誌分析,日誌搜索和可視化的完整工具。Elasticsearch 是基於 Apache Lucene 的搜索工具。Logstash 是用於收集,解析和存儲日誌的工具,能夠經過 Elasticsearch 對其進行索引。

Logstash 支持許多數據源,解析器和過濾器。Logstash 一般與 Lumberjack(一種工具)結合使用。該工具提供其 syslog 實現,並可將本地日誌事件轉發到 Logstash 中。

當經過網絡發送日誌時,Lumberjack 使用 SSL 對日誌進行加密。Logstash 和 Elastcsearch 都支持 HA 配置,沒有單點故障,以確保全部日誌都存儲在遠程。Kibana 是 Elasticsearch 的可視化插件。

Elasticsearch,Logstash 使用 Java 編寫。Kibana 使用 Java 編寫。Lumberjack 使用C語言編寫。License:Apache License 2.0。

DevOps 是一個不斷增加的文化,許多組織企業正在採起。將傳統IT和開發人員緊密結合在一塊兒,爲企業提供敏捷,快速響應的環境。因爲許多工具來支持這些努力,以 Devops 爲 IT 中心的轉變,正變得更不復雜和更有益。

注:英文原文連接:http://www.stratoscale.com/blog/devops/15-open-source-devops-tools-for-the-private-cloud/

近期好文:

《騰訊:大型實時對戰手遊的毫秒級網絡優化》

《中國人壽自動化運維自主研發之路》

《一篇文章全面瞭解監控知識體系》

《京東15萬容器:多快好省大規模彈性雲集羣之道》

《攜程:咱們是如何利用容器實現快速彈性伸縮的?》

《支付平臺架構師談大規模高併發服務化系統設計經驗》

《重塑中小企業運維價值》

相關文章
相關標籤/搜索