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


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

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

так это выглядит как роль в основном сервер где Капистрано выполняет команды. Если это так, то почему это называется "ролью", а не "хостом" или "сервером"?

В приведенном выше примере, в чем разница между :app и :web роли?

что значит делать?

2 77

2 ответа:

роли позволяют писать задачи capistrano, которые применяются только к определенным серверам. Это действительно относится только к развертываниям на нескольких серверах. Роли по умолчанию "app", " web "и" db " также используются внутри, поэтому их присутствие не является необязательным (AFAIK)

в приведенном примере нет функциональной разницы.

": primary => true " - это атрибут, который обеспечивает дополнительную детализацию при указании серверов в пользовательских задачах.

здесь пример спецификации роли в определении задачи:

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

смотрите сайт Капистрано @ 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