Lý lịch :
Tôi đã tạo một ứng dụng được gọi myapp
với Spring-boot
. Nó bao gồm một jar tự thực thi và tương thích với các dịch vụ systemd. Bây giờ, tôi đang cố gắng tích hợp nó với jenkins.
Những gì tôi muốn:
Tôi muốn jenkins có thể:
- dừng dịch vụ
- thay bình.
- khởi động lại dịch vụ.
Vấn đề:
Cho đến nay, chỉ sudoers có thể bắt đầu / dừng dịch vụ. Tôi không muốn jenkins là một sudoer (có vẻ lộn xộn).
Cấu trúc hiện tại:
Tôi có một người dùng myapp
có một /home/myapp
thư mục. Bình được tạo ra được gọi myapp
và được đặt tại /home/myapp
. Người dùng myapp
là chủ sở hữu của jar được tạo:
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
Tôi đã đặt một khóa ssh để jenkins có thể đăng nhập như myapp@myserver
.
Là myapp
chủ sở hữu của bình, tôi nghĩ rằng có thể có một tùy chọn cho phép người dùng myapp
gọi systemctl start/stop myapp
. Trên thực tế, tôi có thể gọi systemctl status myapp
nhưng không start/stop
(mật khẩu gốc được hỏi).
Bất kỳ đề xuất?
myapp
gọi sudo systemctl
cho dịch vụ riêng của mình không?
sudo
lộn xộn, đó thường là cách bạn nên thực hiện một cái gì đó như thế này. Tạo một nhóm, phân công người dùng Jenkins của bạn để nó và sử dụngvisudo
cung cấp một tập lệnh hạn chế cho nhóm đó để quản lý dịch vụ