新聞中心
了解一下配置管理工具,以找出哪個最適合你的 DevOps 組織。

DevOps 正因為有提高產(chǎn)品質(zhì)量、縮短產(chǎn)品開發(fā)時間等優(yōu)勢,目前備受業(yè)界關注,同時也在長足發(fā)展當中。
DevOps 的核心價值觀是團隊文化Culture、自動化Automation、評估Measurement和分享Sharing(CAMS),同時,團隊對 DevOps 的執(zhí)行力也是 DevOps 能否成功的重要因素。
- 團隊文化讓大家團結(jié)一致;
- 自動化是 DevOps 的基礎;
- 評估保證了及時的改進;
- 分享讓 CAMS 成為一個完整的循環(huán)過程。
DevOps 的另一個思想是任何東西,包括服務器、數(shù)據(jù)庫、網(wǎng)絡、日志文件、應用配置、文檔、自動化測試、部署流程等,都可以通過代碼來管理。
在本文中,我主要介紹配置管理的自動化。配置管理工具作為基礎架構(gòu)即代碼Infrastructure as Code(IaC)的一部分,支持使用經(jīng)過測試和驗證的軟件開發(fā)實踐,通過明文定義文件管理和配置數(shù)據(jù)中心。
DevOps 團隊只需要通過操作簡單的配置文件,就可以實現(xiàn)應用開發(fā)中包括版本控制、測試、小型部署、設計模式在內(nèi)的這些最佳實踐。總而言之,配置管理工具實現(xiàn)了通過編寫代碼來使基礎架構(gòu)的配置和管理變得自動化。
為什么要使用配置管理工具?
配置管理工具可以提高應用部署和變更的效率,還可以讓這些流程變得可重用、可擴展、可預測,甚至讓它們維持在期望的狀態(tài),從而讓資產(chǎn)的可控性提高。
使用配置管理工具的優(yōu)勢還包括:
- 讓代碼遵守編碼規(guī)范,提高代碼可讀性;
- 具有冪等性Idempotency,也就是說,無論執(zhí)行多少次重復的配置管理操作,得到的結(jié)果都是一致的;
- 分布式的設計可以方便地管理大量的遠程服務器。
配置管理工具主要分為拉取pull模式和推送push模式。拉取模式是指安裝在各臺服務器上的代理agent定期從中央存儲庫central repository拉取最新的配置并應用到對應的服務器上;而推送模式則由中央服務器central server的中央服務器會觸發(fā)其它受管服務器的更新。
五大最流行的配置管理工具
目前配置管理工具有很多,不同的配置管理工具都有自己最適合的使用場景。而對于下面五個我按照字母順序列出的配置管理工具,都對 DevOps 有明顯的幫助:全都具有開源許可證、使用外部配置文件、支持無人值守運行、可以通過腳本自定義運行。下面對它們的介紹都來源于它們的軟件庫和官網(wǎng)內(nèi)容。
Ansible
“Ansible 是一個極其簡潔的 IT 自動化平臺,可以讓你的應用和系統(tǒng)以更簡單的方式部署。不需要安裝任何代理,只需要使用 SSH 的方式和簡單的語言,就可以免去腳本或代碼部署應用的過程?!薄狦itHub Ansible 代碼庫
- 官網(wǎng)
- 文檔
- 社區(qū)
Ansible 是我最喜歡的工具之一,我在幾年前就開始使用了。你可以使用 Ansible 在命令行中讓多個服務器執(zhí)行同一個命令,也可以使用 YAML 格式的劇本playbook來讓它自動執(zhí)行特定的操作,這促進了技術(shù)團隊和非技術(shù)團隊之間的溝通。簡潔、無代理、配置文件對非技術(shù)人員友好是它的幾個主要優(yōu)點。
由于 Ansible 不需要代理,因此對服務器的資源消耗會很少。Ansible 默認使用的推送模式需要借助 SSH 連接,但 Ansible 也支持拉取模式。劇本 可以使用最少的命令集編寫,當然也可以擴展為更加精細的自動化任務,包括引入角色、變量和其它人寫的模塊。
你可以將 Ansible 和其它工具(包括 Ansible Works、Jenkins、RunDeck、ARA 等)結(jié)合起來使用,因為這些工具 提供了運行劇本時的可追溯性,這樣就可以創(chuàng)建控制流程的中央控制臺。
CFEngine
“CFEngine 3 是一個流行的開源配置管理系統(tǒng),它主要用于為大規(guī)模的系統(tǒng)提供自動化配置和維護?!薄狦itHub CFEngine 代碼庫
- 官網(wǎng)
- 文檔
- 社區(qū)
CFEngine 最早在 1993 年由 Mark Burgess 作為自動配置管理的科學方法提出,目的是降低計算機系統(tǒng)配置中的熵,最終收斂到期望的配置狀態(tài),同時還闡述了冪等性是讓系統(tǒng)達到期望狀態(tài)的能力。Burgess 在 2004 年又提出了承諾理論Promise Theory,這個理論描述了代理之間自發(fā)合作的模型。
CFEngine 的最新版本已經(jīng)用到了承諾理論,在各個服務器上的代理程序會從中央存儲庫拉取配置。CFEngine 的配置對專業(yè)技能要求較高,因此它比較適合技術(shù)團隊使用。
Chef
“為整個基礎架構(gòu)在配置管理上帶來便利的一個系統(tǒng)集成框架?!薄狦itHub Chef 代碼庫
- 官網(wǎng)
- 文檔
- 社區(qū)
Chef 通過由 Ruby 編寫的“菜譜recipe”來讓你的基礎架構(gòu)保持在最新、最兼容的狀態(tài),這些“菜譜”描述了一系列應處于某種狀態(tài)的資源。Chef 既可以通過客戶端-服務端的模式運行,也可以在 chef-solo 這種獨立配置的模式下運行。大部分云提供商都很好地集成了 Chef,因此可以使用它為新機器做自動配置。
Chef 有廣泛的用戶基礎,同時也提供了完備的工具包,讓不同技術(shù)背景的團隊可以通過“菜譜”進行溝通。盡管如此,它仍然算是一個技術(shù)導向的工具。
Puppet
“Puppet 是一個可以在 Linux、Unix 和 Windows 系統(tǒng)上運行的自動化管理引擎,它可以根據(jù)集中的規(guī)范來執(zhí)行諸如添加用戶、安裝軟件包、更新服務器配置等等管理任務?!薄狦itHub Puppet 代碼庫
- 官網(wǎng)
- 文檔
- 社區(qū)
Puppet 作為一款面向運維工程師和系統(tǒng)管理員的工具,在更多情況下是作為配置管理工具來使用。它通過客戶端-服務端的模式工作,使用代理從主服務器獲取配置指令。
Puppet 使用聲明式語言declarative language或 Ruby 來描述系統(tǒng)配置。它包含了不同的模塊,并使用清單文件manifest files記錄期望達到的目標狀態(tài)。Puppet 默認使用推送模式,但也支持拉取模式。
Salt
“為大規(guī)?;A結(jié)構(gòu)或應用程序?qū)崿F(xiàn)自動化管理的軟件?!薄狦itHub Salt 代碼庫
- 官網(wǎng)
- 文檔
- 社區(qū)
Salt 的專長就是快速收集數(shù)據(jù),即使是上萬臺服務器也能夠輕松完成任務。它使用 Python 模塊來管理配置信息和執(zhí)行特定的操作,這些模塊可以讓 Salt 實現(xiàn)所有遠程操作和狀態(tài)管理。但配置 Salt 模塊對技術(shù)水平有一定的要求。
Salt 使用客戶端-服務端的結(jié)構(gòu)(Salt minions 是客戶端,而 Salt master 是服務端),并以 Salt 狀態(tài)文件記錄需要達到的目標狀態(tài)。
總結(jié)
DevOps 工具領域一直在發(fā)展,因此必須時刻關注其中的最新動態(tài)。希望這篇文章能夠鼓勵讀者進一步探索相關的概念和工具。為此,云原生計算基金會Cloud Native Computing Foundation(CNCF)在 Cloud Native Landscape Project 中也提供了很好的參考案例。
網(wǎng)站題目:五大最流行的配置管理工具
文章URL:http://m.5511xx.com/article/cojoehs.html


咨詢
建站咨詢
