2009-07-20 75 views
76

Capistrano食譜中「角色」的用途和功能是什麼?當我看到樣品的食譜,我經常看到這樣的事情:Capistrano中的「角色」究竟是什麼?

role :app, 'somedomain.com' 
role :web, 'somedomain.com' 
role :db, 'somedomain.com', :primary => true 

所以它看起來像一個作用基本上是一個服務器其中Capistrano的執行命令。如果是這樣的話,爲什麼它會被稱爲「角色」而不是「主機」或「服務器」?

在上面的例子中,:app:web角色有什麼區別?

:primary => true選項的作用是什麼?

回答

60

角色允許您編寫僅適用於某些服務器的capistrano任務。這實際上只適用於多服務器部署。 「app」,「web」和「db」的默認角色也在內部使用,因此它們的存在不是可選的(AFAIK)

在您提供的示例中,沒有功能差異。

「:primary => true」是一個屬性,它允許在指定自定義任務中的服務器時進一步細化。

這裏是角色規範的任務定義一個例子:

task :migrate, :roles => :db, :only => { :primary => true } do 
    # ... 
end 

見Capistrano的網站@https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role瞭解更詳盡的解釋。

+2

另請注意:您的行應該是`:only => {:primary => true}`我想...或者問題中的`role`命令應該使用`:: master => true`來代替。我相信這些屬性完全是自由形式的。 – 2010-12-27 14:16:18

3

「:primary => true」選項表示數據庫服務器是主服務器。例如,這對於何時想要使用MySQL複製非常重要。它允許您創建另一個可用於自動故障轉移的鏡像數據庫服務器。它還用於決定運行模型遷移的數據庫服務器(因爲這些更改將被複制到故障轉移服務器)。這個鏈接更多地闡明瞭它:https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration