2012-03-02 61 views
3

我正在使用Rubber Gem在Amazon ec2上進行部署。 它部署和配置Ubuntu的實例,但我需要在服務器上安裝額外的模塊(不是紅寶石模塊)。我如何在部署過程中使用橡膠運行其他腳本?
代碼示例將不勝感激,因爲這是我第一次做這種事情。如何使用橡膠寶石運行其他腳本?

回答

4

我有一個想要在所有EC2實例上安裝NewRelic服務器監視器的類似問題。我最終創建了一個新角色('newrelic')並將其添加到我的所有服務器中。

製作一個自定義的角色很簡單:

  1. 創建config/rubber/deploy-[rolename].rb(通過複製現有)本所要求的
    • 更改任務命名空間
    • 改變:install:bootstrap:start/:stop/:restart任務您的模塊
  2. 創建一個config/rubber/rubber-[rolename].rb
    • 添加你需要在部署文件
  3. 如果需要引用任何變量,創建一個config/rubber/role/[rolename]目錄,並添加任何所需的文件(如[rolename]-upstart.conf
  4. 添加角色到您的服務器(S)通過運行cap rubber:add_role

最簡單的方法是複製現有角色並調整它以完成自己想要的任務。

評委仍然不知道自定義角色是否是正確的方式。這對於newrelic是有意義的,因爲它安裝了需要監控的守護進程,但是對於大多數自定義配置來說,它感覺非常重量級。

+0

我只想運行一個簡單的腳本。我在deploy-setup.rb中放置了幾個腳本,但它們都在代碼上傳之前運行在rubber:install_packages之後。我需要在一切完成後運行腳本,所以我想我需要知道的是最後一個正在運行的任務,然後指定它,但我不知道它是什麼 – 2012-04-28 18:31:56

+0

想通了,你需要做的就是聲明一個任務然後使用before/after機制在部署之後放置它:update_code,但是我在另一個地方也使用了你的建議,所以謝謝:) – 2012-05-03 14:15:29

相關問題