Как мне разделить роли в Capistrano? - PullRequest
2 голосов
/ 25 августа 2011

Я пытаюсь развернуть приложение RoR с помощью Capistrano. Все было хорошо, пока я не представил другую роль в моей конфигурации Capistrano, роль: web, которая предположительно будет моим HTTP / обратным прокси-сервером.

Насколько я понимаю, роль: app должна относиться к серверу приложений (thin, mongrel и т. Д.), А роль: web должна относиться к внешнему серверу (nginx, apache), поэтому я довольно смущен выбором запускать все задачи для всех ролей, хотя capistrano разделяет их по умолчанию.

В настоящее время моя проблема в том, что я не могу заставить deploy: update_code запускаться только на серверах, которые имеют, например, роль: app, и из-за ошибок capistrano, потому что он пытается запустить update_code на моем веб-сервере, где я даже не установил git (мне это не нужно ...). Кто-нибудь преуспел в этом? Может кто-нибудь поделиться кодом?

TIA, нгв

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Эта проблема возникает из-за того, что встроенные задачи не учитывают ограничения роли в ваших пользовательских задачах, которые их вызывают, т. Е.

task my_task, :roles => :web do
    run "some command"  # will only be executed on servers with the :web role
    update              # will be executed for all roles
end

Как вам интуитивно понятно, вам придется переопределить все встроенные задачи. Или вы можете попробовать патч Родни Коха для Capistrano.

0 голосов
/ 07 сентября 2011

Вы явно указываете роль в имени задачи?

task :task_A, :roles => :web do
  #do stuff here
end

task :task_B, :roles => :app do
  #do stuff here
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...