カピストラーノのレシピの「役割」の目的と機能は何ですか?サンプルレシピを見ると、次のようなものがよく見られます。
role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db, 'somedomain.com', :primary => true
roleは基本的にserverであるように見えます。ここでCapistranoはコマンドを実行します。その場合、なぜ「ホスト」や「サーバー」ではなく「ロール」と呼ばれるのでしょうか?
上記の例では、:app
および:web
役割?
:primary => true
オプションは?
ロールを使用すると、特定のサーバーにのみ適用される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 を参照してください。
":primary => true"オプションは、データベースサーバーがプライマリサーバーであることを示します。これは、たとえばMySQLでレプリケーションを使用する場合に重要です。これにより、自動フェールオーバーに使用できる別のミラー化されたデータベースサーバーを作成できます。また、モデルの移行を実行するデータベースサーバーを決定するためにも使用されます(これらの変更はフェールオーバーサーバーに複製されるため)。このリンクはそれをもう少し明確にします: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration