Apa sebenarnya “peran” di Capistrano?

86

Apa tujuan dan fungsi "peran" dalam resep Capistrano? Ketika saya melihat resep sampel, saya sering melihat yang seperti ini:

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

Jadi sepertinya role pada dasarnya adalah server tempat Capistrano menjalankan perintah. Jika itu kasusnya, lalu mengapa disebut "peran" daripada "host" atau "server"?

Dalam contoh di atas, apa perbedaan antara peran :appdan :web?

Apa yang dilakukan :primary => trueopsi tersebut?

Ethan
sumber

Jawaban:

67

Peran memungkinkan Anda untuk menulis tugas capistrano yang hanya berlaku untuk server tertentu. Ini benar-benar hanya berlaku untuk penerapan multi-server. Peran default "app", "web", dan "db" juga digunakan secara internal, jadi kehadirannya tidak opsional (AFAIK)

Dalam sampel yang Anda berikan, tidak ada perbedaan fungsional.

The ": primary => true" adalah atribut yang memungkinkan perincian lebih lanjut dalam menentukan server dalam tugas khusus.

Berikut adalah contoh spesifikasi peran dalam definisi tugas:

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

Lihat situs capistrano @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role untuk penjelasan yang lebih lengkap.

codeprimate
sumber
2
Juga perhatikan: baris Anda harus :only => { :primary => true }saya pikir ... atau roleperintah dalam pertanyaan harus digunakan :master => truesebagai gantinya. Saya yakin atribut ini sepenuhnya dalam bentuk bebas.
docwhat
3

Opsi ": primary => true" menunjukkan bahwa server database adalah server utama. Ini penting ketika Anda ingin menggunakan replikasi dengan MySQL, misalnya. Ini memungkinkan Anda membuat server database cermin lain yang dapat digunakan untuk failover otomatis. Ini juga digunakan untuk memutuskan di server database mana migrasi model harus dijalankan (karena perubahan tersebut akan direplikasi ke server failover). Tautan ini menjelaskannya sedikit lebih: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Bobby Wallace
sumber