2013-06-26 68 views
0

我正在爲基於node.js的web應用程序編寫主廚部署腳本。我是總廚師n00b。停止,刪除,重新安裝廚師的服務

到目前爲止,這是進展順利;我有一個「dependencies.rb」配方,它安裝了我的應用程序依賴的所有包。現在,我正在嘗試編寫「install.rb」,它將繼續安裝我的應用程序。

我希望發生的是:

If the app install directory already exists then: 
    Stop the server 
    Delete the old install directory 
Unpack the new version to the install directory 
Start the service 

嗯,這是一個有點過度簡化,但它或多或少什麼,我試圖完成。在配方中這樣做最好的方法是什麼?我有一種感覺會涉及「通知」。 :P

回答

0

在大多數情況下,配方將完全匹配您在問題中定義的僞代碼。然而,你需要考慮的一件事是你將如何使配方冪等。

Chef的核心概念之一是,如果機器已經處於正確的狀態(即您的應用程序已經部署了正確的版本),那麼您不應該執行任何工作。

雖然我沒有使用它們,但您應該看看applicationapplication_nodejs cookbook,它們公開用於部署應用程序的LWRP。

+0

感謝您的應用程序的指針。我會看看他們。 –

+0

儘管我真的很想將我的應用程序解壓到「myapp - #{version}」,將「myapp」鏈接到該目錄,然後在另一個端口上啓動新應用程序,將HAProxy重定向到新應用程序,然後關閉舊的應用程序,實際上給我零宕機時間(除非有數據庫遷移,當然,在這種情況下先殺死舊的應用程序,運行遷移,然後開始新的應用程序。)不知道是否有任何盒子將花費足夠的時間來完成這一切。 –

+0

實際上,在閱讀完這篇文章之後:http://docs.opscode.com/resource_deploy.html這將會完成我所需要的工作。另外我剛剛發現https://github.com/RiotGames/artifact-cookbook,這看起來也很有用。 –