87

Capistrano レシピの「ロール」の目的と機能は何ですか? サンプルレシピを見ていると、よくこんなのが出てきます。

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

したがって、ロールは基本的に Capistrano がコマンドを実行するサーバーのように見えます。その場合、なぜ「ホスト」または「サーバー」ではなく「ロール」と呼ばれるのですか?

:app上記の例で、との:web役割の違いは何ですか?

オプションは何をし:primary => trueますか?

4

2 に答える 2

67

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

あなたが提供したサンプルでは、​​機能上の違いはありません。

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

タスク定義でのロール指定の例を次に示します。

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

より広範な説明については、capistrano Web サイト @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Roleを参照してください。

于 2009-07-20T19:28:57.890 に答える
3

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

于 2013-08-15T10:02:56.757 に答える