2016-11-24 4 views
0

に$ USERを渡さない、1のようなログインユーザ名が含まれるようにレポURLを設定できますカピストラーノ3はカピストラーノ2では、リモートのssh

set :repo_url, "git+ssh://#{ENV['LOGNAME']}@myrepo.example.com/path/name" 

これを行う目的は、$ LOGNAMEはレポにアクセスするということです アカウントを使用して、通常の権限を取得します。デプロイメントサーバーのログインは$ {LOGNAME}ではありません。これは問題ありません。

capistrano 3でこれを行うことはできますが、元のユーザーXは../repo/.git/configに入力されますが、ユーザーYはログインできないため次のユーザーには失敗しますmyrepo.example.comをXとしました。 これはCapistrano 2で新鮮なgit repoが毎回チェックされていたために働いていました。 cap3の方がはるかに効率的ですが、私は何をすべきかについて迷っています。 /tmp/git-ssh-deploy-staging-user.shスクリプトで-lユーザー がsshコマンドラインに追加された場合、すべて正常ですが、追加するものは何も表示されません。

私は、リポジトリサーバーに "デプロイ"ユーザーを作成し、そのリポジトリに読み取り専用のアクセス権を付与することに頼っていましたが、スケーラブルなソリューションとしてこれについて大いに熱心ではありません。 ADMINはデポの人々に自分のことをさせるのではなく、レポでねじ留めする。

私は提案をお探しですか?たぶんそれはコードの中だけで、私はまだオプションを見つけられていません。

答えて

0

私のdeploy.rbにこのパッチを適用すると、-lオプションが正しく設定された/tmp/ssh-blah-git.shが得られます。

まだロードされていないと思うので、既存のものを上書きすることができませんでした。公式なものの後にタスクを実行しようとしましたが、公式のタスクは、 3回...)私はそれをクリアします。

namespace :git do 
    desc "Upload the git wrapper script, this script guarantees that we can script git without getting an interactive prompt" 
    task :better_wrapper do 
    #puts "BETTER" 
    on release_roles :all do 
     execute :mkdir, "-p", File.dirname(fetch(:git_wrapper_path)) 
     upload! StringIO.new("#!/bin/sh -e\nexec /usr/bin/ssh -l #{ENV['LOGNAME']} -o PasswordAuthentication=no -o StrictHostKeyChecking=no \"[email protected]\"\n"), fetch(:git_wrapper_path) 
     execute :chmod, "700", fetch(:git_wrapper_path) 
    end 
    #puts "BETTER2" 
    Rake::Task['git:wrapper'].clear_actions 
    end 

    after :wrapper, "git:better_wrapper" 
end 
関連する問題