Проблема с: хостами - PullRequest
       14

Проблема с: хостами

0 голосов
/ 10 ноября 2010

У меня есть Capfile для многоступенчатого развертывания, которому необходимо развернуть код на одном сервере (NFS) и, наконец, перезапустить несколько серверов приложений. Поэтому роли не могут быть легко использованы, поскольку серверы приложений не нужно использовать для развертывания: update_code. Я придумал что-то, что могло бы работать, но есть проблема, которую нужно решить.

application_servers = nil

task :production do
   role :nfs, "nfs.someserver.net"
   application_servers = "app.someserver.net"
end

task :staging do
  role :nfs, "nfs-staging.someserver.net"
  application_servers = "app-staging.someserver.net"
end

desc "tail resin logs #{resin_logs}"
task :tail, :hosts => application_servers do
  puts("Server is:"#{application_servers})
  stream "tail -f #{resin_logs}"
end

А при запуске:

#$ cap staging tail
  * executing `staging'
  * executing `tail'
  Server is:app-staging.someserver.net
  * executing "tail -f /log/resin/*.log"
    servers: ["nfs-staging.someserver.net"]
    [nfs-staging.someserver.net] executing command
tail: cannot open `/log/resin/*.log' for reading: No such file or directory
tail: no files remaining
    command finished
failed: "sh -c 'tail -f /log/resin/*.log'" on nfs-staging.someserver.net

При печати значения application_servers в хвосте задачи он говорит "app-staging.someserver.net", но значение, используемое в: hosts => application_servers, пусто (поэтому вместо него используется роль nfs).

Почему переменная application_server имеет два разных значения? Это проблема объема? Я попытался с глобальным ($), и это не работает также.

1 Ответ

0 голосов
/ 10 ноября 2010

Решил проблему, просто изменив использование: hosts на: role для конкретной задачи приложения и добавив новую роль.Ключевой особенностью является использование no_release, чтобы код не развертывался на серверах приложений.Мы хотим перезапустить экземпляр смолы только на этих машинах.

task :production do
   role :nfs, "nfs.someserver.net"
   role :application, "app.someserver.net", :no_release => true;
end

task :staging do
  role :nfs, "nfs-staging.someserver.net"
  role :application, "app-staging.someserver.net", :no_release => true;
end

desc "tail resin logs #{resin_logs}"
task :tail, :roles => application_servers do
  puts("Server is:"#{application_servers})
  stream "tail -f #{resin_logs}"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...