15個私有云的DevOps 開源工具 | 附下載和示例

配置管理工具(Configuration management tools)html

Chefpython

 Chef 的配置文件使用領域專用語言(DSL)的「配方」(以.rb 爲文件擴展名)。多個配方也能夠整合到一個菜譜(cookbook)中。該配方定義了資源及其狀態,例如:應該安裝的軟件包,該文件應存在,服務應該運行,等等。Chef驗證全部定義的資源是否應具備指定的狀態,若是必要,任何資源的實際狀態若是與指定的狀態不一樣,那麼則應用更改。這容許你寫冪等的配方,意味着你能夠屢次應用相同的配方,若是全部定義的資源都具備指定的狀態,那麼Chef 將不會更改任何內容。Chef能夠在 服務器/客戶端 模式中使用,也可在獨立的模式下運行。在任何狀況下,Chef 應安裝要配置的節點或VM上。nginx

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

Chef 菜譜的示例:github

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

Puppetweb

Puppet 的配置文件使用特殊的領域專用語言,它們被稱爲Puppet 清單(以.pp 爲文件擴展名)。Puppet 可使用獨立的模式或者 服務器/客戶端 模式。Puppet 客戶端(agent)應該安裝要配置的每一個節點或VM上。Puppet客戶端 經過一個名爲Facter的工具收集Puppet服務器上的配置更改要求,並生成特定與服務器的目錄,其應用的配置更改都會記錄下來,Puppet 能夠用來配置 類unix系統或 Windows節點/虛擬機。docker

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

Puppet 清單 的示例:apache

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

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

Salt

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

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

Salt 狀態描述文件示例:

nginx:
  pkg.installed

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

Cobbler

 Cobbler使用 DHCP服務器來處理引導服務器並將其引導到TFTP服務器,在那裏它能夠下載做爲PXE引導文件和帶有操做系統的可引導映像。而後 Cobbler使用Linux的 Kickstart(用於基於Red Hat的操做系統)或Pressed(用於基於Debian的操做系統)安裝方法進行無人值守的操做系統安裝和配置。由配置文件來自定義要配置的系統,Cobbler支持多個配置文件。一旦節點被配置,Cobbler應確保該節點被引導到預配置的操做系統而不是PXE。Cobbler包含 命令行客戶端和Web客戶端。

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

Ironic

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

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

編排工具(Orchestration tools)

MCollective

MCollective 是構建服務器編排和並行工做執行系統的框架,而不是一個工具。MCollective 支持分散庫存和自動發現。MCollective 服務端 應安裝在 被管理節點/虛擬機,而MCollective 客戶端應安裝在控制機上。MCollective使用代理插件來擴展其功能。MCollective 服務器和客戶端不直接通訊,而是在發佈/訂閱模式中使用中間件系統(一般是RabbitMQ)。這容許MCollective客戶端向 MCollective 服務器發送廣播請求,也支持直接請求/回覆。

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

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.

Apache Brooklyn

 Apache Brooklyn 容許你使用基於策略的自動化來建模,監控和管理應用程序。對於建模,Apache Brooklyn 使用藍圖(blueprint)的概念,它根據組件、配置、關係和部署場景來定義應用程序。藍圖使用YAML文件編寫。Apache Brooklyn支持許多應用程序,開箱即用。並具備Web UI來部署,監視和管理應用程序。此外,Apache Brooklyn支持許多位置部署,包括雲平臺和現有節點。相同的藍圖能夠用於將應用程序部署到不一樣的位置。Policies 根據應用程序傳感器的讀數定義對應用程序的無人值守更改。

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

Cloudify

Cloudify 容許你在YAML文件中定義應用程序配置、服務和依賴關係。這樣的文件稱爲藍圖.Cloudify 採用藍圖做爲輸入,能夠部署和管理應用程序。Cloudify 支持多種雲計算平臺和虛擬化環境。藍圖還定義了應用程序的生命週期。對於應用程序部署階段,Cloudify支持配置管理工具,如Chef和Puppet。

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

Docker Machine

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

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

持續集成工具 (Continuous integration tools)

Jenkins

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

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

Docker

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

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

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

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.

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 使用JavaScript 編寫. Lumberjack 使用C語言編寫. License: Apache License 2.0.

以上就是今天給你們介紹的DevOps 開源工具,鑑於強大的功能和貢獻,DevOps正在更多地被人們關注,但願以上內容可以對你有所幫助。

閱讀原文

相關文章
相關標籤/搜索