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


86

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

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

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

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

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

回答:


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を参照してください


2
また、注意:あなたの行は:only => { :primary => true }私が思うに...またはrole質問のコマンドが:master => true代わりに使用する必要があります。これらの属性は完全に自由形式だと思います。
docwhat 2010

3

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.