Что именно является "ролью" в Capistrano? - PullRequest
81 голосов
/ 20 июля 2009

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

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

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

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

Что делает опция :primary => true?

Ответы [ 2 ]

64 голосов
/ 20 июля 2009

Роли позволяют вам писать задачи 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.

3 голосов
/ 15 августа 2013

Параметр «: primary => true» указывает, что сервер базы данных является основным сервером. Это важно, например, когда вы хотите использовать репликацию с MySQL. Это позволяет вам создать еще один зеркальный сервер базы данных, который можно использовать для автоматического перехода на другой ресурс. Он также используется для принятия решения о том, на каком сервере базы данных должны выполняться миграции модели (поскольку эти изменения будут реплицированы на отказоустойчивые серверы). Эта ссылка разъясняет это немного больше: https://github.com/capistrano/capistrano/wiki/2.x-from-the-beginning#back-to-configuration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...