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


  本文由來:之前工作需要,在查找運維自動化資料時,發現了這篇文章的英文原版,覺得很不錯。它綜合的介紹了哪些工具,我們運維人員需要掌握,並且如何進行結合其它工具一起使用。給了一些指導性的意見。由於是英文的,於是便有了想翻譯成中文的想法。分享給需要的同學們。結合着谷歌翻譯大法,於是便有了這篇文章。如文中哪里翻譯有誤,還請大家指出哈,我會及時進行修正的。😅😅

  以下是正文,此處應有分隔線...


 

  在可維護性,可靠性,效率和安全性方面,DevOps為私有雲在改進操作流程方面發揮着重要的作用。私有雲是一個由許多硬件和軟件組件組成的復雜系統。對於任何支持的企業組織,操作流程的自動化和文檔記錄,規划變更和跟蹤應用的更新都是強制性的要求。

  同樣的方法也適用於雲計算的工作負載量。此外DevOps的實踐也成為開發者和QA團隊事實上的標准,特別是當使用私有雲作為開發或目標平台時。當然,並不是所有的雲操作方面都可以用DevOps來實踐。例如,許多硬件相關的操作不匹配--你不能用一個軟件工具,去物理的連接服務器上的硬件開關(?本人注:服務器的IPMI是可以做到遠程控制呀。)--但即使在這種情況下,你仍可使用DevOps工具和實踐來驗證連通性和記錄網絡配置過程。也為不斷增長的軟件定義網絡(SDN)的需求提供了一個機會,讓DevOps在新的領域得以發展。

我們將回顧私有雲幾種類別上的15個DevOps 工具

  在這篇文章中,我們將在幾個類別中討論15個針對私有雲的DevOps工具。這幾些工具類別的分選主要是人為合成的,在由工具提供的功能之間沒有嚴格的邊界,並且在某些情況下,這里所提到的工具可以做更多范疇假設。最后,這里的一些工具沒有根據具體的規則去分類,所以如果我們忘記了你認為應該包括的工具,只需給我們發個消息,我們將會討論這個工具,並在下一次綜述時將其納入其中。

  注1:本文屬於作者原創翻譯,轉載還請注明出處以及地址。飛走不可http://www.cnblogs.com/hanyifeng/p/6022560.html

 

 

DevOps Tools

配置管理工具(Configuration management tools

  配置管理工具自動完成日常操作,系統管理任務,當建立復雜的系統時,最大限度地減少人為錯誤。配置管理工具允許你定義的配置作為代碼。(“Infrastructure as a code” 的方式)。它可以讓你追蹤配置基線之間的變化(又稱為配置版本控制),有效的應用它們並在必要時進行回滾更改操作。此外操作流程,如部署或發布管理可以記錄並驗證。

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


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

 

 

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,
 }

 

 

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

 

注1:本文屬於作者原創翻譯,轉載還請注明出處以及地址。飛走不可http://www.cnblogs.com/hanyifeng/p/6022560.html

 

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是一個不斷增長的文化,許多組織企業正在采取。將傳統IT和開發人員緊密結合在一起,為企業提供敏捷,快速響應的環境。由於許多工具來支持這些努力,以Devops為IT中心的轉變,正變得更不復雜和更有益。

 

注1:本文屬於作者原創翻譯,轉載還請注明出處以及本文鏈接地址。飛走不可http://www.cnblogs.com/hanyifeng/p/6022560.html

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

 

參考資料:

http://kisspuppet.com/2013/11/10/mcollective-middleware/

http://www.ibm.com/developerworks/cn/cloud/library/cl-cn-virtualboxironic/index.html

https://www.ibm.com/developerworks/cn/linux/l-cobbler/

http://www.ituring.com.cn/article/179897

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM