Що ж таке "роль" у Капістрано?


86

Яка мета та функція "ролей" у рецепті Капістрано? Коли я переглядаю зразки рецептів, я часто бачу щось подібне:

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

Отже, схоже, роль в основному є сервером, де Capistrano виконує команди. Якщо це так, то чому б його називати "роллю", а не "хостом" або "сервером"?

У наведеному вище прикладі, в чому різниця між ролями :appі :web?

Що робить :primary => trueваріант?

Відповіді:


67

Ролі дозволяють писати капістранові завдання, які стосуються лише певних серверів. Це насправді стосується лише розгортання декількох серверів. Ролі за замовчуванням "app", "web" і "db" також використовуються внутрішньо, тому їх наявність не є обов'язковою (AFAIK)

У наданій вами вибірці функціональної різниці немає.

": Primary => true" - це атрибут, який дозволяє додатково детально визначати сервери у власних завданнях.

Ось приклад специфікації ролі у визначенні завдання:

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

Дивіться веб-сайт capistrano @ https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role для більш детального пояснення.


2
Також зверніть увагу: у вашому рядку має бути :only => { :primary => true }Я думаю ... або замість цього roleслід використовувати команду у питанні :master => true. Я вважаю, що ці атрибути повністю вільні.
docwhat

3

Параметр ": primary => true" вказує, що сервер бази даних є основним сервером. Це важливо, коли ви хочете використовувати реплікацію з MySQL, наприклад. Це дозволяє створити ще один дзеркальний сервер баз даних, який можна використовувати для автоматичного переходу до відмови. Він також використовується для прийняття рішення про те, на якому сервері бази даних слід запускати міграції моделі (оскільки ці зміни будуть відтворені на серверах відмови). Це посилання дещо більше роз'яснює це: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.