背景 :
myapp
我创建了一个名为Spring-boot
. 它由一个自可执行的 jar 组成,并与 systemd 服务兼容。现在,我正在尝试将它与 jenkins 集成。
我想要的是:
我希望詹金斯能够:
- 停止服务。
- 更换罐子。
- 重新启动服务。
问题:
到目前为止,只有 sudoers 可以启动/停止服务。我不希望 jenkins 成为 sudoer(看起来很乱)。
当前结构:
我有一个用户myapp
有一个/home/myapp
文件夹。生成的 jar 被调用myapp
并放置在/home/myapp
. 用户myapp
是生成的 jar 的所有者:
myapp@myserver:~/backend$ ll
total 53900
drwxrwxr-x 2 myapp myapp 4096 Apr 25 17:09 ./
drwxr-xr-x 6 myapp myapp 4096 Apr 25 17:08 ../
-rw-rw-r-- 1 myapp myapp 511 Apr 20 16:13 application.properties
-rwxr--r-- 1 myapp myapp 55175294 Apr 20 19:06 backend-1.0-SNAPSHOT.jar*
lrwxrwxrwx 1 myapp myapp 24 Apr 20 19:20 myapp -> backend-1.0-SNAPSHOT.jar*
-rw-r--r-- 1 myapp myapp 179 Apr 20 19:26 myapp.service
我放置了一个 ssh 密钥,以便 jenkins 可以登录为myapp@myserver
.
与myapp
jar 的所有者一样,我认为可能有一个选项允许用户myapp
调用systemctl start/stop myapp
. 实际上,我可以打电话systemctl status myapp
但不能start/stop
(要求root密码)。
有什么建议么?
sudo
是要走的路。创建一个新组(appadmin
例如),将您的jenkins
用户放入其中,并使用visudo
添加一个带有有限命令列表的新条目,例如:如果您希望
appadmin
组能够在不先输入密码的情况下操作服务(例如,如果用户仅通过 SSH 密钥进行身份验证,则很有用),