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