Я развертывал приложение Symfony2 на одном сервере всего несколько месяцев, и это было прекрасно, но поскольку я добавил больше серверов, я застреваю, когда хочу одновременно обновлять все мои серверы, но запускать несколько команд только один раз (например, миграцию базы данных и создание активов и нажатие на S3).Capistrano развертывается на всех серверах, но запускает некоторые задачи только на одном
Вот мои серверы:
server '192.168.0.100', user: 'ubuntu', roles: %w{app db web toto}
server '192.168.0.101', user: 'ubuntu', roles: %w{app db web}
А вот одна задача выполняется у меня в deploy.rb
:
namespace :specific do
task :command do
on roles(:all) do |host|
if host.roles.include?(:toto)
invoke 'symfony:console', 'one:specific:command'
end
end
end
end
С cap --roles=toto staging deploy
но только один из двух моих серверов были обновлены.
Я попробовал метод фильтра так:
namespace :assets do
task :increment do
set :filter, :roles => %w{toto}
invoke 'symfony:console', 'one:specific:command'
end
end
и другие методы, копирование вставки из переполнения стека ответов, но не нашел ни одного совпадения ответа
Возможный дубликат [Capistrano 3: Запуск задачи только на одном сервере из пула серверов, назначенных роли] (http://stackoverflow.com/questions/23095865/capistrano-3-run-task-only-on -a-single-server-from-a-pool-of-servers-assign-a) – LaurentG