Unix管理配置文件
如果存在一個Unix管理公理,那就是:兩次過后,沒有系統(tǒng)管理任務是有趣的。如果您發(fā)現(xiàn)正在重復做單調(diào)而枯燥的事,那么自動化它。當然,有時很難自動化,但應該至少考慮這個問題,并且權(quán)衡其優(yōu)勢及自動化所花費的時間。
由于經(jīng)常學習Unix操作系統(tǒng)的一些知識,而且很喜歡Unix操作系統(tǒng),我們今天就來和大家一起討論下Unix cfengine的知識。如果您對自動化系統(tǒng)管理是認真的,那么應該了解 cfengine 工具。僅當您寧愿把時間都花在 vi 編輯器時,可以不去了解 Unix cfengine。
Unix管理配置文件是艱苦的??梢酝ㄟ^考慮 cfengine 是否勝任該任務開始。遺憾的是,cfengine 的編輯是面向行的,所以它可能不太適合復雜的配置文件。但對于如 TCP 包裝器配置文件 /etc/hosts.allow 那樣的簡單文件 cfengine 是最適合的。
通常,Unix管理希望保留配置文件的多個版本。譬如,可能需要在 /etc/resolv.conf 中有兩組 DNS 配置設置,一組是用于外部機器,另一組是用于內(nèi)部機器。很自然,外部 DNS resolv.conf 可以進入稱為 "external" 的目錄,而內(nèi)部 resolv.conf 可以進入相應的 "internal" 目錄。讓我們假定這兩個目錄都在一個全局 "spec" 目錄下,該目錄是配置文件的一種根目錄。
下列代碼會遍歷 spec 目錄,搜索適合于給定機器的文件名。它將從 /usr/local/spec 開始,然后往下,尋找與請求相匹配的文件。
而且,Unix管理它將檢查每個目錄的名稱是否與屬于某些機器的類相同。因此,如果我們請求 locate_global('resolv.conf', 'wonka'),該函數(shù)將在 /usr/local/spec 目錄下查找 resolv.conf 文件,該文件要么在根目錄下,要么在該根目錄的子目錄下,它的名稱應與 "wonka" 機器所屬的類相匹配。
所以,如果 "wonka" 屬于 "chocolate" 類,并且如果有 /usr/local/spec/chocolate/resolv.conf 文件,那么 locate_global() 將返回"/usr/local/spec/chocolate/resolv.conf"。
如果 locate_global() 找到與文件相匹配的多個版本(譬如,/usr/local/spec/chocolate/resolv.conf 和 /usr/local/spec/resolv.conf),則它會放棄。這里假設沒有配置比有兩個錯誤之一要好。還有,請注意,機器可以屬于不止一個類。
Unix管理的講解,我們先到這里。
【編輯推薦】