根據(jù)我的經(jīng)驗(yàn),基于文本文件的配置管理系統(tǒng)帶來的麻煩最少,至少應(yīng)該優(yōu)先為內(nèi)部代碼使用。有很多種方式去管理基于文本的配置。你可以使用源碼處理系統(tǒng)管理,如Git。通過很多工具,如diff,可以降低調(diào)試出錯(cuò)配置的難度。如果情況緊急,你可以通過遠(yuǎn)程文本編輯器,如Emacs或者Vi,在服務(wù)器上直接編輯配置。
通過數(shù)據(jù)庫來處理配置的方式不那么靈活。這是一種容易引起爭議的反模式,通常在開發(fā)和運(yùn)維團(tuán)隊(duì)隔得比較遠(yuǎn)的企業(yè)中出現(xiàn),也是DevOps希望解決的目標(biāo)。用數(shù)據(jù)庫處理配置讓應(yīng)用棧運(yùn)行更加困難。你需要一個(gè)工作的數(shù)據(jù)庫才能讓應(yīng)用啟動(dòng)。
通過命令式的命令行API來管理配置設(shè)置同樣也是讓人懷疑的實(shí)踐,但是有時(shí)候還是有用的,特別是在API用來管理底層基于文本的配置時(shí)。很多配置管理系統(tǒng),如Puppet,
依賴于能夠管理聲明配置。如果我們通過其他方式管理配置,比如命令行命令式API,就失去了使用Puppet的好處。