2009-07-20 11 views
76

カピストラノのレシピで「役割」の目的と機能は何ですか?私はサンプルのレシピを見ると、私はしばしばこのような何かを参照してください。カピストラーノの「役割」は正確には何ですか?

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

をだから、役割のように見える基本的にカピストラーノは、コマンドを実行サーバーです。その場合、なぜ「ホスト」や「サーバー」ではなく「役割」と呼ばれるのでしょうか?

上記の例では、:appロールと:webロールの違いは何ですか?

:primary => trueオプションの機能は何ですか?

答えて

60

役割を使用すると、特定のサーバーにのみ適用されるカピストラのタスクを作成できます。これは、実際にはマルチサーバー展開にのみ適用されます。 "app"、 "web"、 "db"のデフォルトロールも内部的に使用されているため、その存在はオプションではありません(AFAIK)

提供されたサンプルでは機能的な違いはありません。

":primary => true"は、カスタムタスクでサーバーを指定する際に細かく設定できる属性です。ここで

は、タスク定義における役割仕様の例である:

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

は、より広範な説明についてはhttps://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role @カピストラーノのウェブサイトを参照してください。

+2

また、あなたの行は ':only => {:primary => true}'でなければならないと思います...または質問の 'role'コマンドは'代わりにmaster => trueを指定します。私はこれらの属性が完全にフリーフォームであると信じています。 –

3

":primary => true"オプションは、データベースサーバーがプライマリサーバーであることを示します。これは、たとえばMySQLでレプリケーションを使用する場合に重要です。自動フェールオーバーに使用できる別のミラーリングされたデータベースサーバーを作成できます。また、モデルの移行を実行するデータベースサーバー(これらの変更はフェールオーバーサーバーにレプリケートされるため)を決定するためにも使用されます。 https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

関連する問題