Только для записи, это может быть решением с использованием Capistrano 3:
desc "Do something specific for 3 different servers with 3 different roles"
task :do_something do
on roles(:api_role), in: :sequence do
# do something in api server
end
on roles(:app_role), in: :sequence do
# do something in application server
end
on roles(:another_role), in: :sequence do
# do something in another server
end
end
Определение сервера для выполнения задачи do_something на сервере приложений будет выглядеть примерно так:
server 'application.your.domain', user: 'deploy', roles: %w{app_role}
Затем вы можете вызвать задачу (есть несколько способов сделать это), и задача выполнит конкретные инструкции в соответствии с "app_role".