web-dev-qa-db-ja.com

カピストラーノの「役割」とは正確には何ですか?

カピストラーノのレシピの「役割」の目的と機能は何ですか?サンプルレシピを見ると、次のようなものがよく見られます。

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

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

上記の例では、:appおよび:web役割?

:primary => trueオプションは?

84
Ethan

ロールを使用すると、特定のサーバーにのみ適用される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 を参照してください。

65
codeprimate

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

3
Bobby Wallace