Latar Belakang :
Saya membuat aplikasi bernama myapp
with Spring-boot
. Ini terdiri dari toples yang dapat dieksekusi sendiri dan kompatibel dengan layanan systemd. Sekarang, saya mencoba mengintegrasikannya dengan jenkins.
Apa yang saya inginkan:
Saya ingin jenkins dapat:
- hentikan layanan.
- ganti toples.
- mulai ulang layanan.
Masalah:
Hingga kini, hanya sudoer yang dapat memulai / menghentikan layanan. Saya tidak ingin jenkins menjadi sudoer (sepertinya berantakan).
Struktur saat ini:
Saya memiliki pengguna myapp
yang memiliki /home/myapp
folder. Guci yang dihasilkan disebut myapp
dan ditempatkan di /home/myapp
. Pengguna myapp
adalah pemilik toples yang dibuat:
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
Saya menempatkan kunci ssh sehingga jenkins dapat login sebagai myapp@myserver
.
Seperti myapp
pemilik toples, saya pikir mungkin ada opsi yang memungkinkan pengguna myapp
untuk menelepon systemctl start/stop myapp
. Sebenarnya, saya bisa menelepon systemctl status myapp
tetapi tidak start/stop
(kata sandi root diminta).
Ada saran?
sudo
berantakan, umumnya Anda harus menerapkan sesuatu seperti ini. Buat grup, tetapkan pengguna jenkins Anda ke dalamnya dan gunakanvisudo
menyediakan perintah terbatas yang ditetapkan untuk grup itu untuk mengelola layananmyapp
panggilansudo systemctl
hanya untuk layanannya sendiri?Jawaban:
sudo
adalah cara untuk pergi. Buat grup baru (appadmin
misalnya), masukkanjenkins
pengguna Anda di dalamnya, dan gunakanvisudo
tambahkan entri baru dengan daftar perintah yang terbatas, misalnya:Jika Anda ingin
appadmin
grup dapat mengoperasikan layanan tanpa memasukkan kata sandi terlebih dahulu (berguna jika pengguna hanya diautentikasi oleh kunci SSH misalnya),sumber