LoginSignup
2
3

More than 5 years have passed since last update.

Rundeck でローカルコマンドを実行する際に sudo パスワードを指定する

Posted at

Rundeck には Secondary Sudo Password Authentication というのがあって、
リモートノードに SSH した後の sudo で必要になるパスワードを設定することができます。
"sudo -u otheruser /sbin/some-command" ってやつです。

ローカルコマンドを実行する際にもココに書かれている方法で sudo のパスワードが指定できるかと思ったのですが、、、
secondary ぢゃないから無理のようです。
試行錯誤の末、なんとかやり方は見つけたのでメモを残しておきます。

環境

  • Rundeck 2.6.1
  • CentOS 6.6

sudo のための準備

RPM パッケージからインストールすると、Rundeck の実行ユーザーは rundeck になります。

まずは rundeck ユーザーを sudoers へ追加し、
(このユーザーアカウントには パスワードが設定されていませんので・・・ )パスワードを設定します。
とりあえずパスワードは hogemoge-2828 にしたとしましょう。

また、環境によっては以下の設定などが必要になったりします。

Defaults:rundeck !requiretty

Job Option で sudo パスワードを設定

こんな感じで Job Option を追加します。

  • Job Name - 任意の名前(sudoPassword である必要はありません)
  • Default Value - rundeck ユーザーアカウントに設定したパスワード(省略すると Job 実行のたびにパスワード入力が必要になります)
  • Input Type - Secure を選択
  • Required - 必須なので Yes を選択

rundeck-execute_locally_a_command_with_sudo_password-job_option.png

最下部 Usage がポイントです。

Workflow で sudo パスワードを指定

前述の Usage で、追加した Job Option の値を参照することができます。
root ユーザーとして whoami するだけのサンプルで試してみます。

Command

Node StepsCommand を選択した場合は以下の通りです。

Bash:

echo $RD_OPTION_SUDOPASSWORD_HOGEMOGE_2828 | sudo -S whoami

Commandline Arguments:

echo ${option.sudoPassword_hogemoge-2828} | sudo -S whoami

Script / Script file or URL

Script もしくは Script file or URL を選択した場合もほぼ同じです。

Script Content:

echo @option.sudoPassword_hogemoge-2828@ | sudo -S whoami

実行結果

こんな感じです。
rundeck-execute_locally_a_command_with_sudo_password-log_output.png

その他

Local Command だとダメです。
Job Option の参照は ${option.sudoPassword_hogemoge-2828} でイケますが、パイプラインなどが解釈されず、以下のようなログが出力されてしまいました。
単なる echo になってますね・・・。

rundeck | sudo -S whoami

LocalExecNodeStepPlugin では対応していないんですかね。
ソースコードを読めばわかるかもしれません。

うむ。イマイチですな・・・

無理やり sudo パスワードを指定できるようにしましたが、
rundeck ユーザーのパスワードを Job ごとに設定 or 変更しなければならないなんて苦痛でしかありません。
NOPASSWD はチョットドウナンダロウ・・・とか思っていたのに、むしろコッチのほうがセキュリティリスク高くないですかね。
Key Storage が使えないのはかなり痛いです。
これならパスワードなしでもいいかなー

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3