Как выполнить развертывание только на одном сервере с помощью Capistrano v3?

Как выполнить развертывание только на одном сервере с помощью Capistrano v3? Все решения, которые я там нашел, развертываются на каждом сервере, поэтому я предполагаю, что они предназначены для v2.

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


person pupeno    schedule 16.06.2014    source источник
comment
Какие решения [вы] нашли? Дайте несколько советов относительно того, что не будет работать, чтобы не тратить время на бесполезные ответы.   -  person tobias_k    schedule 09.07.2014
comment
Похоже, вам нужен фильтр HOST и ROLE. Вы пробовали, как указано в ссылке ниже? capistranorb.com/documentation/advanced-features/role-filtering Аналогичный вопрос также был найден в следующей ссылке: stackoverflow.com/questions/20783552/   -  person leenasn    schedule 09.07.2014
comment
Мой ответ сработал для вас?   -  person gpupo    schedule 16.07.2014


Ответы (2)


Как уже упоминалось, в Capistrano 3 способ развертывания определенных частей вашего приложения на одном сервере использует Фильтрация HOST. Давайте представим, что вы выполняете развертывание непосредственно в рабочей среде и у вас есть эта конфигурация в config/deploy/production.rb

set :stage, :production


server "webserver1.example.com”,         roles: [:web]

server "appserver1.example.com",         roles: [:app]                   
server "appserver2.example.com",         roles: [:app]                   
server "appserver3.example.com",         roles: [:app]                        

server “dbserver1.example.com”,          roles: [:db]
server “dbserver2.example.com”,          roles: [:db]


Затем, если вы хотите выполнить развертывание только на своем веб-сервере1, просто выполните команду:

cap --hosts=webserver1.example.com production deploy
person sdude    schedule 16.07.2014
comment
Я запускаю cap --host=foo production deploy и, тем не менее, capistrano, ближе к концу развертывания этого приложения rails, подключается к панели для запуска какой-то задачи и терпит неудачу, потому что каталог выпуска не существует. - person pupeno; 04.08.2014

Вы должны использовать настройки многоступенчатые.

Capistrano 3.x является многоступенчатым по умолчанию.

На одном из его этапов вы определяете только тот сервер, который вам нужен.

set :stage, :staging

server 'staging.zodiacmedia.co.uk', roles: %w{web app db}, port: 22

set :deploy_to, '/var/www/staging.example.com'

Команда Run:

cd /home/deploy/capistrano/example
cap staging something:to:do

Этот учебник устарел, но может вам помочь.

person gpupo    schedule 10.07.2014
comment
Я уже использую многоступенчатый. Я не хочу деплоить на один этап, я один хочу деплоить на один сервер из многих на одном из этапов. - person pupeno; 17.07.2014