2012-04-16 8 views
0

私はcapistranoを使ってコマンドを実行します。私はsshキーベースの認証を持っていますが、各マシンには異なるsudoパスワードがあります。私は次の出力を取得し、これを実行するとCapistrano、sudoコマンドと複数のパスワード

私capfileこの

default_run_options[:pty] = true 
role :admin, "server1","server2","server3" 

desc "myCommand" 
task :mycommand, :roles=>:admin do 
    run "cd <workdir> && #{sudo} <command>" 
end 

次のようになります。

* executing `myCommand' 
    * executing "cd <workdir> && sudo -p 'sudo password: ' <command>" 
    servers: ["server1", "server2", "server3"] 
    [server2] executing command 
    [server3] executing command 
Password: 
** [out :: server2] 
** [out :: server3] 
    [server1] executing command 
** [out :: server1] 
** [out :: server3] CMD-OUTPUT 
*** [out :: server2] Sorry, try again. 
** [out :: server2] Sorry, try again. 
Password: 
** [out :: server2] 
** [out :: server1] 
** [out :: server2] CMD-OUTPUT 
** [out :: server1] 
** [out :: server1] Sorry, try again. 
** [out :: server1] sudo: 3 incorrect password attempts 
    command finished in 14411ms 
failed: "sh -c 'cd <workdir> && sudo -p '\\''sudo password: '\\'' <command>'" on server1 

どうやらカピストラーノは、私はすべてのサーバー上で同じpasswortを持っていることを前提としていることは可能ですか?どうすれば修正できますか?

+0

この質問の回答を参照してください:http://stackoverflow.com/questions/8241639/multiple-server-deploy-asking-ssh-password-for-each-server –

+0

私はすでに公開鍵のログイン設定をしていますが、私はsudoが必要です。どういうわけか私はランを「並行」にすることはできますか? –

答えて

0

このような自動インストールでは、パスフレーズが設定されていないSSHキーを使用するのが最も一般的です。秘密鍵の単なる所有権は、ログインを許可するのに十分です(したがって、ファイル自体は事実上パスワードです)。

SSH設定でキーが接続できるIPアドレスと実行可能なコマンドを制限することで、ファイルが消失した場合に備えて、システムをさらに保護することができます。

+0

私はcapistranoを管理上の目的で使用します。デプロイ用ではありません。だから私はsudoが必要です。私が言ったように、私は既に公開鍵ログインを設定しています。 –

0

異なるパスワードの複数のサーバーをサポートしていません。これらをすべて同じパスワードに変更するのではなく、sudoを使って実行する必要がある特定のコマンドを設定して、問題のユーザーのパスワードを要求しないようにすることができます。

パスワードなしで猫にユーザbobはsudoのアクセスを与えるために、あなたはあなたのsudoersファイルにこれを追加するには:

bob ALL=NOPASSWD: /bin/cat 

あり、いくつかのセキュリティ上の懸念がここで明らかにされているが、私は、彼らはあなたのキャップをユーザーに与えるよりも少ない感じあなたのすべてのボックスへの完全なsudoアクセス。 'man sudoers'を必ず読んで、NOPASSWDを使用して許可するコマンドを慎重に制限してください。

+0

それは良い選択ではありません。パラレルではなくシリアルでコマンドを実行する方法はありませんか? –

関連する問題