Metche
由於 debian.org.tw 以及許多社群網站都是多人之團隊維護的系統,團隊中許多人都有 root 權限,如果團隊間沒有協調妥當,常常另一人改了設定,下一人又改回來,造成設定上得困擾。於是我們需要一個系統可以追蹤、紀錄各種設定的修改。
有些方法是把設定檔目錄丟進 svk, bzr, mercurial 等等的版本控制軟體。但是往往會忘記將改過的設定檔儲存 (commit),以至於日後又忘記是誰動的手腳。近日裝了 metche,發現他大致可以滿足我的需求。metche 的基本功能是協助你監視 /etc 下面的設定檔,並在更動的時候 Email 一份 diff 給指定的電子郵件參考。預設 diff 是列出更動過的檔案,也可以要求 metche 顯示所有的修改細節。但是如果要求其顯示所有的修改內容,可能會誤把某些機要資訊像是密碼之類寄出來,為了避免資訊外漏,metche 也可以設定成寄出的信件使用 PGP 加密,只需要確定收件人的 PGP Key 在 root 的 keyring 中即可。
此外,團隊中修改了系統,為了知會其他人,通常也必須寫一份系統日誌,metche 也可以幫忙檢查 所指定的日誌檔否更改 (預設是 /root/Changelog),並把修改後的東西一併寄給你。因此你可以指定日誌檔, 並要求其他管理員修改過系統後寫下系統日誌,並將 metche 寄出的位址指定為某個 mailing list, 如此系統一旦更改,所有人都會被知會。
除了這兩個基本的設定檔監視功能外,metche 也支援 `Debian packages monitoring‘,因此若升級或安裝了特別的軟體, metche 也可以一併通知你。(需安裝 apt-show-versions) 最另我覺得方便的另外一個功能是 metche 支援 VServer, 所以你可以在 host 中裝一份 metche,然後監視所有的 Vserver guest servers!
另外一個值得一提的功能是,由於進行系統維護的時候,常常不是在幾分鐘內就調整好所有的設定,有時會耗上好幾個小時。而 metche 預設是每五分鐘檢查一次差異。你永遠不希望他在你更改系統的途中就寄出系統更動的通知,如此其他人只會收到非常雜亂的報告。為此 metche 設計了一個機制,它設定了三個狀態 (與 Debian 開發模型類似) unstable, testing 與 stable. 每五分鐘檢查差異時,它會與最後一次的修改相比,如果曾經修改過檔案,就會創建一組新的 unstable 狀態,並儲存修改。如果距離最後一次修改超過一個小時,則儲存為 testing。若超過三天都沒有再修改設定,則儲存為 stable。每次狀態升級到 testing 或 stable 時,系統就會寄發一次報告信。
在修改過程中,如果發生了意外 (像是編輯器誤刪某個字元,卻查了半天查不出來),你可以透過 metche 指令取得修改的細節,只要該次修改再五分鐘一次的輪迴存檔中。你可以使用此指令列出所有儲存的狀態
# metche list
也可查看最後儲存的修改細目
# metche report unstable-latest
如果已經確認系統已經修改完畢,可以使用以下指令將最後的 testing 狀態儲存改為 stable. 如此便不需要等超過三天系統才將該狀態升級為 stable.
# metche stabilize