Rundeskではどのような形でコマンドが実行されるのかを見ていきます。
Command メニューから、対象を指定して、アドホックなコマンド実行ができます。
localhost を対象に uname -a を実行してみます。
実行結果が表示されます。
このコマンドがどのような形で実行されているのを確かめるために、pstree -p --show-parents $$ を実行してみます。
pstree の親プロセスはshで、さらにその親プロセスがjavaです。つまり、Rundeckのサービスを実行しているjavaプロセスから、直接コマンドが実行されています。localhostのときはsshを使わないのですね。
ノードにubuntu-hostというリモートホストを登録したので、このノードを対象に再びpstreeを実行してみます。
こんどは、親プロセスがsshdになっています。ssh経由で実行したようです。
Rundeckでは対象がlocalhostのときは、コマンドを直接実行し、それ以外のリモートホストではssh経由で実行していることがわかりました。
どうやらlocalhostを特別扱いしているようです。
対象ノードがlocalhostの場合には、コマンドの実行も少し変わるようで、コマンドリストを指定したときに、期待した実行結果になりません。
この図は実行コマンドとして、
LANG=ja_JP.UTF-8; export LANG; printenv LANG; date
を実行した時のものですが、localhostの実行では日付の出力にロケール設定が効いていません。
ならばと、コマンドに
sh -c 'LANG=ja_JP.UTF-8; export LANG; printenv LANG; date'
指定したときは、さらに不思議な結果になります。
Commandでコマンドリストを使うときはかなり注意が必要なようです。