Jenkins サービス ユーザーが mongodb サービスを再起動する

Jenkins サービス ユーザーが mongodb サービスを再起動する

Centos 7。通常、非ルート ユーザーとして sudo コマンドを実行したい場合は、visudo を開いて、適切な場所に次の行を追加します。

%<userGroup> ALL= NOPASSWD: <command>

サービス(今回の場合は mongodb.service)を jenkins ユーザーで再起動したい場合、次のようにします。

%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service

ここまでは順調です。次に、次のようにして Jenkins ユーザーに切り替えます。

sudo su -s /bin/bash jenkins

次にコマンドをテストすると、すべて正常に動作します。stop/status/start コマンドでも同じことを実行し、テストします。これらでやりたいことはこれだけです。問題は、Jenkins でテストを実行すると、これらのコマンドが呼び出され、何も行われないことです。この MongoDB はテスト専用なので、必要なときにのみ実行しても問題ありません。したがって、私が知りたいのは、これを動作させる方法、またはサービス ユーザーでサービスを再起動/停止/開始できるようにする方法です。

答え1

念のため、他の誰かが同じ種類の問題に遭遇した場合に備えて、これらのことに関してエラー メッセージが表示されなかったため、すべてをスクリプト ファイルに入れて、スクリプト ファイルを sudo 権限で実行するための許可を与えることにしました。その場合、次のエラー メッセージが表示されました: 「sudo: 申し訳ありませんが、sudo を実行するには tty が必要です」 これを使用して、次の解決策で問題を追跡できました: https://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password

関連情報