Что такое "роль" в Капистрано?
какова цель и функция "ролей" в рецепте Капистрано? Когда я смотрю на рецепты, я часто вижу что-то вроде этого:
role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db, 'somedomain.com', :primary => true
так это выглядит как роль в основном сервер где Капистрано выполняет команды. Если это так, то почему это называется "ролью", а не "хостом" или "сервером"?
В приведенном выше примере, в чем разница между :app
и :web
роли?
что значит делать?
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