jenkins に root としてコマンドを実行させる

jenkins に root としてコマンドを実行させる

私は、SSH経由で本番サーバーにログインし、systemctl restart myservice.serviceでいくつかのサービスを再起動するJenkinsサーバーを持っています。

同様の問題を読んだことがありますが、最も一般的な解決策は次のとおりです。

jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service

それを sudoers ファイルに挿入します。

また、

Defaults:jenkins !requiretty

私のデプロイファイルはこれを実行します:

sudo /bin/systemctl restart myservice.service

そして、私の努力にもかかわらず、次のエラーが引き続き発生します。

sudo: no tty present and no askpass program specified

SSH 時に -t を使用することについて読んだことがありますが、複数のコマンドを実行し、その一部は sudo コマンドではないため、どのように実行すればよいかわかりません。

それで、Jenkins にサービスを再起動させるための良い解決策を持っている人はいますか? Jenkins が root をプライマリ ユーザーとして使用することを避けたいです。

編集:

これは私の側の問題でした。私のjenkinsは別のサーバーにssh接続しましたが、「jenkins」としてログインしていないため、間違ったユーザーの権限を変更していました。解決策は

jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service

適切なユーザーであれば正常に動作します。

関連情報