《15個私有云上的 DevOps 開源工具》要點:
本文介紹了15個私有云上的 DevOps 開源工具,希望對您有用。如果有疑問,可以聯系我們。
在可維護性,可靠性,效率和安全性方面,DevOps 為私有云在改進操作流程方面發揮著重要的作用.私有云是一個由許多硬件和軟件組件組成的復雜系統.
對于任何支持的企業組織,操作流程的自動化和文檔記錄,規劃變更和跟蹤應用的更新都是強制性的要求.
同樣的方法也適用于云計算的工作負載量.此外DevOps的實踐也成為開發者和 QA 團隊事實上的標準,特別是當使用私有云作為開發或目標平臺時.當然,并不是所有的云操作方面都可以用 DevOps 來實踐.
例如,許多硬件相關的操作不匹配--你不能用一個軟件工具,去物理的連接服務器上的硬件開關(本人注:服務器的 IPMI 是可以做到遠程控制呀.)
但即使在這種情況下,你仍可使用 DevOps 工具和實踐來驗證連通性和記錄網絡配置過程.也為不斷增長的軟件定義網絡(SDN)的需求提供了一個機會,讓 DevOps 在新的領域得以發展.
在這篇文章中,我們將在幾個類別中討論15個針對私有云的 DevOps 工具.這幾些工具類別的分選主要是人為合成的,在由工具提供的功能之間沒有嚴格的邊界,并且在某些情況下,這里所提到的工具可以做更多范疇假設.
最后,這里的一些工具沒有根據具體的規則去分類,所以如果我們忘記了你認為應該包括的工具,只需給我們發個消息,我們將會討論這個工具,并在下一次綜述時將其納入其中.
DevOps Tools
配置管理工具自動完成日常操作,系統管理任務,當建立復雜的系統時,最大限度地減少人為錯誤.配置管理工具允許你定義的配置作為代碼.(“Infrastructure as a code” 的方式).
它可以讓你追蹤配置基線之間的變化(又稱為配置版本控制),有效的應用它們并在必要時進行回滾更改操作.此外操作流程,如部署或發布管理可以記錄并驗證.
使用案例:私有云初始化部署和配置,將更改應用到私有云,應用具體的部署和配置.
Chef?的配置文件使用領域專用語言(DSL)的“配方”(以.rb 為文件擴展名).多個配方也可以整合到一個菜譜(cookbook)中.該配方定義了資源及其狀態,例如:應該安裝的軟件包,該文件應存在,服務應該運行,等等.
Chef 驗證所有定義的資源是否應具有指定的狀態,如果必要,任何資源的實際狀態如果與指定的狀態不同,那么則應用更改.這允許你寫冪等的配方,意味著你可以多次應用相同的配方,如果所有定義的資源都具有指定的狀態,那么 Chef 將不會更改任何內容.
Chef 可以在 服務器/客戶端 模式中使用,也可在獨立的模式下運行.在任何情況下,Chef 應安裝要配置的節點或VM上.
Chef 客戶端是用 Ruby 語言編寫的,Chef 服務器是用 Ruby 和 Erlang 語言編寫的.許可:2.7版本以后的使用 Apache License,之前版本使用 GNU General Public License.
Chef 菜譜的示例:
nclude_recipe “apt”
package ‘nginx’ do ? action :install end
service ‘nginx’ do ? action [ :enable, :start ]
end
Puppet?的配置文件使用特殊的領域專用語言,它們被稱為 Puppet 清單(以.pp 為文件擴展名).Puppet 可以使用獨立的模式或者 服務器/客戶端 模式.Puppet 客戶端(agent)應該安裝要配置的每個節點或VM上.
Puppet 客戶端 通過一個名為 Facter 的工具收集 Puppet 服務器上的配置更改要求,并生成特定與服務器的目錄,其應用的配置更改都會記錄下來.
Puppet 可以用來配置 類 unix 系統或 ?Windows 節點/虛擬機.
Puppet 是用Ruby 語言編寫.許可:Apache License.
Puppet 清單 的示例:
service { ‘nginx’:
ensure => running,
enable => true, }
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(又叫SaltStack)同時支持服務器/客戶端 和無代理模式.在后一種情況下,Salt 使用SSH連接到受管理的節點/虛擬機.Salt 使用以Python編寫的執行模塊,其中包含函數以定義配置任務.另外 Salt 支持 ad-hoc ?命令.Salt?狀態文件(以.sls 為文件擴展名)以 YAML 格式定義冪等任務.
Salt 使用 Python 語言編寫.許可:Apache License.
Salt 狀態描述文件示例:
nginx:
pkg.installed
裸機配置工具從中心服務器基于網絡的操作系統自動安裝.
使用案例:在私有云的初始部署期間提供新的裸機,增加新的裸機服務器,裸機配置作為私有云的服務.
Cobbler?使用 DHCP 服務器來處理引導服務器并將其引導到TFTP服務器,在那里它可以下載作為PXE引導文件和帶有操作系統的可引導映像.
然后 Cobbler 使用 Linux 的 Kickstart(用于基于Red Hat的操作系統)或Pressed(用于基于Debian的操作系統)安裝方法進行無人值守的操作系統安裝和配置.
由配置文件來自定義要配置的系統,Cobbler 支持多個配置文件.一旦節點被配置,Cobbler 應確保該節點被引導到預配置的操作系統而不是PXE.Cobbler 包含 命令行客戶端和 Web 客戶端.
Cobbler 使用 Python 語言編寫.許可:GNU General Public License.
Ironic?是一個OpenStack項目,它使用PXE配置裸機服務器和 IPMI以打開/關閉機器.Ironic 包含 Ansible Playbooks(bifrost項目),以獨立模式安裝和運行 Ironic,無需其它 OpenStack 組件.Ironic 還包含命令行客戶端和 Web 客戶端.
Ironic 使用 Python 語言編寫.License:GNU Affero General Public License.
編排作為配置工具的元級.
使用方案:初始化部署和配置私有云,自動擴展.
MCollective?是構建服務器編排和并行工作執行系統的框架,而不是一個工具.MCollective 支持分散庫存和自動發現.
MCollective 服務端 應安裝在 被管理節點/虛擬機,而 MCollective 客戶端應安裝在控制機上.MCollective 使用代理插件來擴展其功能.
MCollective 服務器和客戶端不直接通信,而是在發布/訂閱模式中使用中間件系統(通常是RabbitMQ).這允許 MCollective 客戶端向 MCollective 服務器發送廣播請求,也支持直接請求/回復.
MCollective 使用Ruby語言編寫. 許可:Apache License.
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 使用藍圖(blueprint)的概念,它根據組件、配置、關系和部署場景來定義應用程序.藍圖使用 YAML 文件編寫.
Apache Brooklyn 支持許多應用程序,開箱即用.并具有 Web UI 來部署,監視和管理應用程序.此外,Apache Brooklyn 支持許多位置部署,包括云平臺和現有節點.
相同的藍圖可以用于將應用程序部署到不同的位置.Policies?根據應用程序傳感器的讀數定義對應用程序的無人值守更改.
Apache Brooklyn 使用 Java, Javascript, Groovy 語言編寫.許可: Apache License.
Cloudify?允許你在 YAML 文件中定義應用程序配置、服務和依賴關系.這樣的文件稱為藍圖.Cloudify 采用藍圖作為輸入,可以部署和管理應用程序.
Cloudify 支持多種云計算平臺和虛擬化環境.藍圖還定義了應用程序的生命周期.對于應用程序部署階段,Cloudify 支持配置管理工具,如Chef和Puppet.
Cloudify 使用 Python 語言編寫.許可:Apache License.
Docker Machine?是一個工具,它允許你在提供的節點上安裝 Docker(見下文),之后可以遠程的管理這樣的節點.
Docker Machine 使用Go語言編寫.許可:Apache License.
使用案例:從開發到生產,在內部云開發、安裝和應用程序運行的統一平臺 .
Jenkins?是一個具有許多插件的自動化服務器.用于構建,測試和自動化部署應用程序.通常Jenkins用作軟件開發的 CI/CD 工具.Jenkins 的作業(構建)可以由各種觸發器啟動.例如提交代碼到版本控制系統,按計劃事件,通過訪問特定 URL 構建或者在完成其它構建之后進行觸發.
Jenkins 使用 Java 語言編寫. 許可:MIT License.
4.2?Docker
Docker?允許你將具有所有依賴關系的應用程序軟件打包到容器中,這可以很輕松的部署在基于 Linux 的平臺上.在非 Linux 平臺上 Docker 使用一個虛擬機來運行容器.
Docker 使用 Go 語言編寫. 許可:Apache License 2.0.
使用案例:從私有云服務和應用程序整合日志,監控分布式服務和應用程序.
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.
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 中心的轉變,正變得更不復雜和更有益.
注:英文原文鏈接:http://www.stratoscale.com/blog/devops/15-open-source-devops-tools-for-the-private-cloud/
文章來自微信公眾號:高效運維
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4222.html