Развертывание Приложения для направляющих к Нескольким использованию Серверов Capistrano - Лучшие практики

У меня есть приложение направляющих, которое я должен развернуть на 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 файлы.

42
задан Louise 13 April 2010 в 22:56
поделиться

1 ответ

Все это должно быть в одном файле. Вот пример:

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% вероятности, что ответ на этот вопрос - ДА), то убедитесь, что указана только одна.

71
ответ дан 26 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

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