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

标签 ruby deployment capistrano

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

我们在 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 用户。是否可以直接设置登录用户而无需将此代码拖到每个任务?

最佳答案

由于我没有收到合适的答案,而且我自己也没有这个想法,所以我决定请教作者。 Capistrano 3.x 使用 SSHKit 管理远程执行命令,and here's their answer :

您可以尝试覆盖命令映射,以便每个命令都以所需的 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

关于ruby - 在 Capistrano 3 中永久切换用户(单独授权和部署),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24400184/

相关文章:

gwt - Intellij IDEA : Ultimate to Tomcat7 server

在阶段配置文件中设置时,capistrano deploy_to 不起作用

ruby-on-rails - 如何优雅地重启 thin + nginx?

ruby-on-rails - 将 header 附加到 Rspec Controller 测试

ruby-on-rails - 正则表达式替换时区偏移量

mysql - Rails 字符串唯一 ID

authentication - Capistrano 无法部署到新的 Ubuntu 服务器,因为 SSHKit/Net::SSH 无法进行身份验证

ruby-on-rails - 新项目配置

java - Eclipse 中的 Jetty - 从 .war 加载静态内容

python - 在不使用IIS的情况下将django站点部署到Windows服务器