Mer*_*ian 8 ruby deployment capistrano
我们在服务器管理中有以下模式 - 所有用户都有自己的用户,但部署完全由特殊部署用户执行,没有直接登录的可能性.
我们在Capistrano 2.x中使用了这个方法:
default_run_options[:shell] = "sudo -u deploy bash"
$ cap stage deploy -s user=thisisme
Run Code Online (Sandbox Code Playgroud)
我知道Capistrano 3.x有直接切换用户的方法:
task :install do
on roles(:all) do
as :deploy do
execute :whoami
end
end
end
Run Code Online (Sandbox Code Playgroud)
但是这段代码将填满所有任务,默认任务无论如何都不会继承部署用户.是否可以直接设置登录用户而无需将此代码拖到每个任务?
由于我没有得到正确的答案而且自己没有得到这个想法,所以我决定问作者.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
Run Code Online (Sandbox Code Playgroud)
文件说"这可能不明智,但有可能".因人而异
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |