gpt4 book ai didi

ruby-on-rails - webistrano ssh 代理

转载 作者:行者123 更新时间:2023-12-02 13:59:18 25 4
gpt4 key购买 nike

我有一个使用自己的私钥/公钥对部署的 Webistrano 设置。我想利用 :remote_cache 的简单性策略,但不想将私钥复制到部署服务器。

这么久我已经设置了这些任务:

namespace :ssh do 
task :start_agent do
ssh_options[:forward_agent] = true
result = `ssh-agent -t 600`
# Extract env variables
%w(SSH_AUTH_SOCK SSH_AGENT_PID).each do |key|
if result =~ /#{key}=(.*?);/
ENV[key] = $1
end
end
cmd = "ssh-add #{ssh_keys}"
result = `cmd`
end

task :stop_agent do
# Kill the agent started previously
`ssh_agent -k $SSH_AGENT_PID`
end
end

before 'deploy', 'ssh:start_agent'

这个 before :deploy似乎工作了一半,但我有几个问题:
  • 我需要在部署后(以及部署失败后)停止代理。是否有任何回调我可以 Hook ssh:stop_agent任务?
  • deploy:update_code任务失败并出现错误 Unable to resolve revision for 'master' on repository 'git@git.eenet.ee:base/mms.git'

  • 任何人都可以对此有所了解吗?

    最佳答案

    为了回答我自己的问题,我求助于通过 cron @reboot 从外部启动 ssh-agent并将其绑定(bind)到一个已知的套接字并将 webistrano key 添加到该代理:

    @reboot laas sh -c 'eval `ssh-agent -a /path/to/my/ssh-agent.sock`; ssh-add /path/to/webistrano/config/id_rsa'

    这样我就可以编写一个简单的 Webistrano 配方,将 ENV 配置为使用该套接字:
    ssh_options[:forward_agent] = true
    ENV['SSH_AUTH_SOCK'] = '/path/to/my/ssh-agent.sock'

    关于ruby-on-rails - webistrano ssh 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7402966/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com