2014-06-25 18 views
8

Abbiamo un modello seguente nella gestione del server: tutti gli utenti hanno un proprio utente, ma la distribuzione viene eseguita completamente dall'utente di distribuzione speciale, senza possibilità di accesso diretto.Passaggio permanente dell'utente in Capistrano 3 (autorizzazione separata e distribuzione)

Abbiamo usato questo metodo a Capistrano 2.x:

default_run_options[:shell] = "sudo -u deploy bash" 

$ cap stage deploy -s user=thisisme 

Sono consapevole che Capistrano 3.x ha metodo per passare utente direttamente:

task :install do 
    on roles(:all) do 
     as :deploy do 
      execute :whoami 
     end 
    end 
end 

Ma questo codice riempirò tutto attività e le attività predefinite non erediteranno comunque l'utente di distribuzione. È mai possibile impostare l'utente di login direttamente senza trascinare questo codice per ogni attività?

risposta

6

Poiché non ho ricevuto risposta adeguata e non ho avuto l'idea da solo, ho deciso di chiedere agli autori. Capistrano 3.x utilizza SSHKit per gestire i comandi di esecuzione remota, and here's their answer:

Si potrebbe provare a sovrascrivere la mappa dei comandi in modo tale che ogni comando venga preceduto dalla stringa sudo desiderata. 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 

La documentazione dice "questo non può essere saggio, ma sarebbe possibile". YMMV

Problemi correlati