2014-10-20 73 views
0

我對init_command有點困惑。廚師服務資源init_command,可以有人向我解釋這

如何使用此命令?

例如,我可以這樣做:

init_command "path\to\service\rake serivce:"

,並將其運行它

的開始:

"path\to\service\rake serivce:start"

爲站:

"path\to\service\rake serivce:stop"

或將它運行爲:

"path\to\service\rake serivce:"

和只添加的啓動,停止等其他的命令?

它會更好手動指定每個命令,以便爲啓動這將是:

start_command "path\to\service\rake serivce:start"

和停止這將是:

stop_command "path\to\service\rake serivce:stop"

我的意思是,我我查看了服務資源文檔,但沒有很好地解釋這一點。

回答

1

首先,init_command似乎只適用於service資源的init供應商。如果您使用的是家庭操作系統redhat,那麼這沒有問題,但其他操作系統系列可能不會默認爲init。其次,即使在init供應商,你也不會得到你所追求的結果。你會得到:

'path/to/service/rake: start' # note the space between the ':' and the command 

最後,init_command真正盼望的是一個標準的init腳本,而不是一個rake命令。

如果你想要這種行爲,我建議你使用cookbook_file資源在/etc/initd目錄中放置包裝腳本。該腳本只會沿着命令傳遞。

#!/bin/bash 
path/to/rake/command service:$1 

然後,您可以任其提供給init_command或確保該文件是/etc/init/service_name.conf這對init提供商的默認。

的很好奇,爲init_command的使用是在這裏:

https://github.com/opscode/chef/blob/master/lib/chef/provider/service/init.rb#L53

+0

我在Windows上運行,是的,我知道,施虐受虐狂和所有有關時,紅寶石。這個問題的主要原因是因爲我想澄清這一點,因爲它不是特別明顯。任何方式,謝謝這回答了我想知道的。 – Thermatix 2014-10-20 13:42:37

+0

哇。您是否聲明服務資源的提供者?否則,廚師會去尋找一個windows服務,它不會找到。祝你好運。 – 2014-10-20 17:54:26

+0

不,但除非提供者可以設置爲耙子,否則我懷疑它會有很大的幫助。 – Thermatix 2014-10-20 18:24:44

相關問題