让詹金斯以root身份执行命令

让詹金斯以root身份执行命令

我有一个詹金斯服务器,它通过 ssh 登录到我的生产服务器,并且应该使用 systemctl restart myservice.service 重新启动一些服务

我读过类似的问题,最常见的解决方案是:

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'ing 时使用 -t 的内容,但我不确定如何执行此操作,因为我执行了多个命令,而且有些命令不是 sudo 命令。

那么有人有一个好的解决方案让詹金斯重新启动我的服务吗?我想避免詹金斯使用 root 作为其主要用户。

编辑:

这是我这边的一个问题。我的 jenkins ssh 到另一台服务器并且没有以“jenkins”身份登录,因此我正在更改错误用户的权限。解决方案与

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

只要是正确的用户,就可以正常工作。

相关内容