コマンドの実行には capistrano を使用します。私は ssh キー ベースの認証を使用していますが、マシンごとに異なる sudo パスワードを使用しています。
私のキャップファイルは次のようになります
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
どうやらカピストラーノは、すべてのサーバーで同じパスワードを持っていると想定していますが、それは可能ですか? どうすれば修正できますか?