在Capistrano 3中永久切换用户(单独授权和部署)



我们在服务器管理中有以下模式-所有用户都有自己的用户,但部署完全由专门的部署用户执行,没有直接登录的可能性。

我们在Capistrano 2.x中使用了这个方法:

default_run_options[:shell] = "sudo -u deploy bash"
$ cap stage deploy -s user=thisisme

我知道卡皮斯特拉诺3。X有直接切换用户的方法:

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

但是这段代码将填充所有任务,并且默认任务无论如何都不会继承deploy user。是否有可能直接设置登录用户而不将此代码拖动到每个任务?

由于我没有得到合适的答案,而且我自己也没有得到这个想法,所以我决定询问作者。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

相关内容

最新更新