2011-07-29 225 views
11

我有興趣從Capistrano切換到廚師,但我有幾個問題把所有的部分放在一起。廚師部署?

我已經關注了http://wiki.opscode.com/display/chef/Quick+Start,並且能夠使用knife啓動EC2實例。至於代碼部署,看起來好像我想要做http://wiki.opscode.com/display/chef/Deploy+Resource中的事情,唯一的問題是,在那個頁面上的任何地方都沒有提及代碼塊應該部署在什麼目錄/文件中。

我遇到的另一個問題是瞭解如何在服務器設置後部署代碼更改。也許我只是習慣了我當前的工作流程(git push && cap deploy),但我能說的最好的是,在我提交我的更改後,我應該ssh進入服務器並運行sudo chef-client?有些事情感覺不對。沒有相應的帽子,即chef deploy

最後(也許這有點困難),我正在尋找部署多軌應用程序到一臺服務器。在每個應用程序的回購庫中保留一些chef配置文件來描述其部署的細節似乎是謹慎的,但我不確定如何與廚師回購/託管服務器進行交互。每個應用程序都是一個角色嗎?從我對事物工作方式的理解中,我也對「廚師 - 客戶端」試圖在運行時部署所有應用程序的想法感到有些不安。隨着git push && cap deploy我確定我正在部署。而其他一些應用程序回購可能不處於可部署狀態。有沒有辦法在這個設置中部署一個應用程序?

+0

只是出於好奇工作,爲什麼你想切換到部署與廚師?我總是覺得不對,因爲某些原因.. – noli

+0

也許我應該改寫我的問題介紹,「我有興趣瞭解是否應該切換到廚師」......我目前使用[橡膠](https: //github.com/wr0ngway/rubber/wiki)用於我的rails部署。它運行得很好,但它不支持同一實例上的多個應用程序(這正在迅速成爲我的需求)。我也有我部署的非rails項目......所以我對可以配置服務器,引導它並部署各種項目的單一工具/工作流的想法非常感興趣。 – james

回答

8

因此,knife實際上能夠執行capistrano-esque任務 - 特別是跨越多個服務器運行命令。

將您的應用部署到所有的應用程序服務器,假設你跟着Opscode公司Rails應用程序菜譜路徑,你可以只做到以下幾點:

knife ssh role:t<appserver-role> chef-client -xroot -P<pass> 

這將在所有的運行廚師客戶爲根你的應用服務器。它使用廚師搜索API來查找具有該角色的所有節點並在其上運行該命令。

它非常強大。

+2

如果我理解正確,這將運行搜索返回的節點上的所有食譜?這意味着,對於[部署資源](http://wiki.opscode.com/display/chef/Deploy+Resource),我想執行的任何操作(部署特定版本,回滾等)意味着修改部署配方中的操作和修訂屬性,將配方推送給廚師服務器,然後發出上述命令? – james

3

關於使用ssh按需部署的建議絕對正確。如果我可以進一步詳細說明如何使用Chef作爲部署解決方案(特別是與Capistrano工具相比)。 Chef被設計成配置管理和系統集成的工具,這意味着系統上運行的所有東西都應該是冪等的。

當Chef運行發生時,使用Chef部署關於重新運行所有內容時有時會出現混淆。記住Capistrano的工作是告訴系統「做到這一點」,廚師通過告訴系統「做到這一點」來工作,那麼通常應該在屬性和數據包中定義數據庫應該使用的應用程序版本和模式。當Chef運行時,如果應用程序已經部署並且數據庫已經具有適當的模式,則不應該發生任何事情,只有當系統尚未處於期望的狀態時才應該採取行動。這就是爲什麼即使在部署多個應用程序時重新運行所有內容也不應該成爲問題。

5

我寫了以下文章,介紹如何使用廚師部署Ruby on Rails。

http://tech.hulu.com/blog/2012/07/06/automating-system-provisioning-and-application-deployment-with-chef/

嗯...這篇文章不僅僅是Rails的,但本例的獅子份額約爲部署Rails的。

還有一個名爲「應用程序」食譜的社區食譜,可用於部署Ruby on Rails。與該食譜相比,本文中的示例應該對新人更容易理解。然而,一旦你習慣使用文章中的例子來做它,你應該看看應用程序菜譜,看看它是否對你更有意義。

+0

鏈接不存在。 – kvivek

2

根據我的經驗,最好保留capistrano,因爲它具有一些RoR功能,您將不得不復制廚師。廚師是一個非常靈活的工具,你可以做很多工作,因此它可以替代許多其他工具。我個人發現有針對性的工具更有用。

獨角獸的Capistrano插件,S3與其他資產同步(如https://github.com/bokmann/dunce-cap)總是非常有用。

至於部署和Rails應用管理紅寶石更簡單的方法,我也可以建議http://www.cloud66.com

聲明:我雲66