Capistrano 3: использовать пользовательскую переменную сервера в задаче
У меня многоступенчатая многосерверная настройка, и в моей задаче мне нужно использовать имя сервера
например в stagin.rb У меня:
set :stage, :staging
# Define servers
server 'xxx.xx.xx.xxx', user: 'deploy', roles: %w{app}, name: 'app1'
server 'xxx.xx.xx.yyy', user: 'deploy', roles: %w{app}, name: 'app2'
и я хочу использовать эту переменную "name" в моей задаче:
task :configure do
on roles(:app), in: :parallel do
# how do I get server name here?
end
end
Ответы
Ответ 1
Если вы хотите вернуть имя хоста /IP, то это будет
task :configure do
on roles(:app), in: :parallel do |server|
p server.hostname # server hostname should be in here
end
end
Если вы хотите получить доступ к пользовательским свойствам, таким как :name
в этом конкретном случае, они сохраняются в хеше properties
объекта конфигурации server
: просто используйте server.properties.name
вместо server.hostname
.