Постоянное переключение пользователя в Capistrano 3 (отдельная авторизация и развертывание)

#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