Lý lịch :
Tôi đã tạo một ứng dụng được gọi myappvớ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 myappcó một /home/myappthư mục. Bình được tạo ra được gọi myappvà được đặt tại /home/myapp. Người dùng myapplà 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à myappchủ 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 myappgọi systemctl start/stop myapp. Trên thực tế, tôi có thể gọi systemctl status myappnhưng không start/stop(mật khẩu gốc được hỏi).
Bất kỳ đề xuất?
myappgọi sudo systemctlcho dịch vụ riêng của mình không?
sudolộ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ụngvisudocung cấp một tập lệnh hạn chế cho nhóm đó để quản lý dịch vụ