У меня есть приложение направляющих, которое я должен развернуть на 3 серверах - machine1.com, machine2.com и machine3.com. Я хочу смочь развернуть его на всех машинах сразу и каждой машине индивидуально. Кто-то может выручить меня со скелетом файл конфигурации Capistrano / рецепт? Все это должно быть в deploy.rb, или я должен выломать его в machine1.rb и т.д.?
Я думал, что на правильном пути заставлял Capistrano брать в параметрах командной строки, но он дросселировал, когда я попробовал, устанавливает роли в пространствах имен. Я передал бы в 'hosts=1,2,3' как аргумент и установил бы role:app/web/db на "machine#{host}.com" после разделения на команде, и вход в каждого делают |host | {}...
Так или иначе, кроме создания 4 различных deploy.rb файлов и переименования его прежде, чем выполнить cap:deploy каждый раз, я озадачен. Я хотел бы смочь сделать следующее:
cap deploy:machine1:latest_version_from_svn
cap deploy:all_machines:latest:version_from_svn
Просто не знайте, должно ли это все быть в deploy.rb, разделенном с пространствами имен или если это должно быть повреждено в несколько *, развертывают **.rb файлы.
Все это должно быть в одном файле. Вот пример:
set :application, "my-app"
set :repository, "git@git.my-git-host.com:my-app.git"
set :keep_releases, 5
set :deploy_via, :remote_cache
set :git_enable_submodules, true
set :scm, :git
set :user, 'your-user-here'
set :deploy_to, "/var/www/staging.mydomain.com"
set :branch, 'staging'
set :rails_env, 'staging'
role :web, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com"
role :app, "machine1.mydomain.com", "machine2.mydomain.com", "machine3.mydomain.com"
role :db, "db.mydomain.com"
# ...
Вы увидите, что был указан только один db-сервер. Это машина, с которой будут запускаться миграции. Если у вас только одна база данных (99,9% вероятности, что ответ на этот вопрос - ДА), то убедитесь, что указана только одна.