Что такое «роль» в «Капистрано»?

86

Какова цель и функция «ролей» в рецепте капистрано? Когда я смотрю образцы рецептов, я часто вижу что-то вроде этого:

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 @ 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

Бобби Уоллес
источник