Специфичные для сервера детали с Capistrano во время развертывания - PullRequest
1 голос
/ 23 мая 2011

У меня много серверов, на которых выполняется один и тот же код с другой конфигурацией, которые я хотел бы развернуть с помощью Capistrano.Конфигурация сервера выглядит следующим образом:

role(:server) { ["127.0.0.1", {:name => "mymachine1"}] }
role(:server) { ["127.0.0.2", {:name => "mymachine2"}] }
role(:server) { ["127.0.0.3", {:name => "mymachine3"}] }

Проблема в том, что вы хотите создать символическую ссылку в зависимости от имени сервера, например,

task :setup_all_server do
    find_servers(:roles => "server").each do |server|
        server_name = server.options[:name]
        run "mkdir -p #{deploy_to}/releases"
        run "ln -s #{deploy_to}/current/scripts /home/#{user}/scripts"
        run "ln -s #{deploy_to}/current/configuration/#{server_name} /home/#{user}/configuration"
    end
end

Настройка и развертывание работают довольно хорошодля всех серверов, но есть ли простой способ, если я хотел бы развернуть или настроить только один сервер в зависимости от имени?Что-то вроде

cap deploy [:name=>"mymachine1337"]

Или что-то вроде: Как выполнить развертывание на одном конкретном сервере, используя Capistrano

, но с фильтром для : name без потери server.options [: name] при запуске задачи установки.

1 Ответ

0 голосов
/ 24 мая 2011

Это скорее обходной путь, чем решение конкретной проблемы.Я закончил тем, что использовал многоступенчатое расширение для Capistrano https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension с определенной конфигурацией для каждой установки вместо файла конфигурации для каждой среды, например

/deploy/myinstallation.rb
   set :config_folder, "myinstallation"
   role(:server) { ["myuser@127.0.0.1"] }

Это позволяет запустить:

cap myinstallation deploy:setup
cap myinstallation deploy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...