#ruby #deployment #capistrano
#ruby #развертывание #capistrano
Вопрос:
У нас есть следующая схема управления сервером — у всех пользователей есть свой пользователь, но развертывание полностью выполняется специальным пользователем deploy, без возможности прямого входа в систему.
Мы использовали этот метод в Capistrano 2.x:
default_run_options[:shell] = "sudo -u deploy bash"
$ cap stage deploy -s user=thisisme
Я знаю, что в Capistrano 3.x есть способ прямого переключения пользователя:
task :install do
on roles(:all) do
as :deploy do
execute :whoami
end
end
end
Но этот код будет заполнять все задачи, а задачи по умолчанию все равно не будут наследовать deploy user. Возможно ли когда-нибудь настроить пользователя для входа в систему напрямую, не перетаскивая этот код в каждую задачу?
Ответ №1:
Поскольку я не получил правильного ответа и сам не понял идею, я решил спросить авторов. Capistrano 3.x использует SSHKit для управления командами удаленного выполнения, и вот их ответ:
Вы могли бы попробовать переопределить сопоставление команд таким образом, чтобы каждая команда получала префикс нужной строки sudo. https://github.com/capistrano/sshkit/blob/master/README.md#the-command-map
SSHKit.config.command_map = Hash.new do |hash, command|
hash[command] = "<<sudo stuff goes here>> #{command}"
end
В документации говорится: «Это может быть неразумно, но это было бы возможно». YMMV