2014-05-22 47 views
1

我想在一臺機器上啓動elasticsearch服務,最初我打算使用pallet.actions.service來做到這一點,但文檔說現在已經棄用了托盤.crate.service /服務。是否有使用pallet.crate.service的指南

但是,我找不到任何指南來使用它來簡單地啓動節點上已安裝的initd服務。

下面是我第一次嘗試使用舊的服務函數獲取運行es節點。不幸的是,我無法啓動服務,它安裝了elasticsearch,但沒有運行該服務。當我玩弄這個我注意到,它已被否決:

(def elasticsearch-server 
    (server-spec 
    :extends [(javacrate/server-spec {})] 
    :phases 
    {:install (plan-fn 
       (add-es-source) 
       (package-manager :update) 
       (package "elasticsearch") 
       (service "elasticsearch" :action :start))})) 

回答

2

如果service做一些額外的東西除了給你一個地道的接口服務,我不記得,所以你可以做的是使用exec-script*,這是我在自己的代碼中沒有任何問題所做的。事實上,我甚至用Elasticsearch(除其他外)和我的服務使用runit進行監督。

(exec-script* "service elasticsearch start") 

也許service確實復甦,不過,當該服務無法啓動的一個更好的工作?如果service elasticsearch start不返回0那麼您的整個計劃將失敗。

+1

我喜歡使用板條箱的想法,所以你的代碼可以在不同的發行版上運行,但是如果你正在構建一個可以在多個發行版上使用它的板條箱,它是非常有用的。每當我看到托盤代碼調用'exec-script'時,我都會受到驚嚇。 'exec-checked-script'總是*首選。 –

相關問題