1

私は Rundeck を初めて使用し、完全に驚いています。ジョブを実行しようとしています。私のシナリオの詳細は次のとおりです。

  • Rundeck は、ユーザー「master」のノード サーバー (rundeck サーバー) とノード ターゲット (リモート Solaris ホスト) の間で ssh パスワードを使用しない認証で構成されます。

  • /app/acme/stopApp.shノード Targetで、 userでスクリプトを実行したいと考えていますappmanager

  • 通常、上記のスクリプトを実行する必要がある場合は、手動で次のように進めます。

ssh master@server

sudo su - appmanager

または単に

ssh -t master@server
sudo su - appmanager

パスワードなしで動作し、最終的に実行されます (appmanager として)

/app/acme/stopApp.sh

しかし、Rundeck を使用してこれらの手順を再現する方法がわかりません。各ジョブ ラインの rundeck が新しい ssh 接続を使用するという以前のメッセージを読んだので、以下のワークフローは常に失敗し、次のメッセージが表示されます。

sudo: tty が存在せず、askpass プログラムが指定されていません リモートコマンドが終了ステータス 1 で失敗しました

誰かがこの問題について私を助けてくれますか?

この機能がなければ、私の部署に DevOps を少し導入することはできません。:-D

ユーザー ガイドと管理者ガイドを読みましたが、このフォーラムでも簡単な例を見つけることができませんでした。

私はあなたの助けに感謝します。

Rundeck のバージョンは 1.4 です

4

2 に答える 2

4
sudo su - appmanager

ログイン シェルを開こうとするため、実際の端末が必要です。この動作を回避するには、「-」を削除してください。最終的に、コマンドは次のようになります

sudo su -c /app/acme/stopApp.sh appmanager
于 2012-12-12T20:53:37.650 に答える
2

ssh ログインはパスワードなしで機能しますが、パスワードが不要になるようにターゲット サーバーで sudo を構成する必要もあります。

マスターユーザーがappmanagerユーザーとしてコマンドを実行できるようにする必要があるだけなので、sudo を使用してこれを完全に処理できます。/etc/sudoersターゲットで、次を追加します。

master  ALL=(appmanager) NOPASSWD: ALL

次に、ssh コマンドは次のようになります。

ssh -t master@server 'sudo -u appmanager /app/acme/stopApp.sh'

通常は appmanager ログイン シェルによって処理される環境セットアップが必要な場合は、そのセットアップを明示的にソースする必要があります。(とにかく、デプロイメント環境のセットアップはログイン シェルに限定されるべきではないと私は主張します。)

あるユーザーが別のユーザーとしてコマンドを実行できるようにする方法の詳細については、ServerFault の回答と、より詳細なsudoers のマニュアル ページを参照してください。

于 2012-12-19T23:28:26.590 に答える