2015-11-19 160 views
1

語境:如何告訴Puppet在停止運行時停止服務?

在Linux(RedHat的家庭)系統,我有一個啓動的基於初始腳本服務/停止手動大部分時間,一般只在響應運行於特定的,不常見的情況。 init腳本是我無法控制的代碼的簡單包裝。

如果在初始化腳本中未執行stop操作而導致服務中止,則會中止操作並使系統處於故障狀態,需要手動干預才能修復。

當運行該服務的系統關閉時,它們會不精確地殺死它。我可以通過chkconfig註冊該服務,以便在主機關閉時通過init腳本關閉該服務;這就解決了每臺主機的問題。

問:

我想自動化這個服務的配置,通過木偶停止,在關機。

我該如何告訴Puppet註冊一個chkconfig的服務,以便在系統關閉時通過初始化腳本停止服務,但不會由Puppet管理?

我已經試過:

我的傀儡直接調用chkconfig作了做作exec聲明,但感覺不太優雅(並可能在某些方面我都沒有想到的突破)。

我玩了noop標誌到service類型在Puppet中,但它似乎沒有預期的效果。

回答

2

Puppet沒有任何內置支持來配置服務運行的運行級別,也沒有任何內置的對chkconfig的廣義支持。通常,以chkconfig註冊服務是服務安裝責任;通過系統RPM安裝的服務以這種方式註冊。

此外,根據LSB convention,chkconfig會識別initscripts頂部的結構化註釋,以確定哪些運行級別服務將默認運行。一個合適的initscript只需要在chkconfig中註冊就可以設置默認的運行級別 - 特別是,它可以設置爲在運行級別0和6中停止,這就是你所要做的。

如果你正在自己編寫腳本,並手動或通過Puppet直接部署它們(而不是將它們打包並通過Yum安裝它們),那麼你最好的辦法是構建一個定義類型來管理腳本和它的腳本註冊。您不需要也不需要Service資源,但可以使用File資源來放置適當的文件,並且可以使用Exec資源來處理註冊聽起來正確的資源。