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