Как Вы определяете те же задачи по-другому для различных ролей в Capistrano?

Я использую Capistrano для обработки моего развертывания, и у меня есть две различных роли в моей установке-: сеть и: обработка. У них обоих есть обычное: разверните задачи, но: задача перезапуска должна отличаться для двух типов сервера.

Таким образом, моя первая попытка была чем-то вроде этого:

task :restart, :roles => :web do
    run "... web related restart stuff ..."
end

task :restart, :roles => :processing do
    run "... processing related restart stuff ..."
end

Который не работает, потому что второе: перезапуск (для: обработка роли), заменяет первое: перезапуск (для: веб-роль), и: сеть: перезапуска никогда не происходит.

У меня был беглый взгляд вокруг, чтобы видеть, мог ли я написать условный код, в зависимости от которой роли (или ролей) сервер мог бы быть в том, когда задача выполняется, но нет рядом ни с какой документацией там для такой вещи. Какие-либо идеи?

10
задан Tim Macfarlane 10 August 2010 в 07:55
поделиться

1 ответ

Вы должны использовать пространства имен:

namespace :web do
  desc "Restart web servers"
  task :restart, :roles => :web do
    # Restart Magic Here
  end
end

namespace :process do
  desc "Restart process servers"
  task :restart, :roles => :process do
    # Restart magic here
  end
end

# Optionally:
task :restart do
  web.restart
  process.restart
end

Это то, что вы ищете, я думаю!

Также, чтобы использовать их в командной строке, вы должны использовать

$ cap <stage>           # (if using multistage)
$ cap web:restart       # Restarts web servers
$ cap process:restart   # Restarts process servers
$ cap restart           # Restarts both process and web servers

(Источник: я сопровождающий Capistrano.)

7
ответ дан 4 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: