पृष्ठभूमि :
मैंने एक ऐप बनाया है जिसका नाम myapp
है Spring-boot
। इसमें एक स्व-निष्पादन योग्य जार होता है और सिस्टमड सेवाओं के साथ संगत होता है। अब, मैं इसे जेनकिंस के साथ एकीकृत करने की कोशिश कर रहा हूं।
मैं क्या चाहता हूँ:
मैं चाहता हूँ कि जेनकींस सक्षम हों:
- सेवा बंद करो।
- जार बदलें।
- सेवा को पुनरारंभ करें।
संकट:
अब तक, केवल sudoers सेवाएं शुरू / बंद कर सकते हैं। मैं नहीं चाहता कि जेनकींस एक सुडोल बन जाए (यह गन्दा लगता है)।
वर्तमान संरचना:
मेरे पास एक उपयोगकर्ता है myapp
जिसमें एक /home/myapp
फ़ोल्डर है। उत्पन्न जार कहा जाता है myapp
और पर रखा जाता है /home/myapp
। उपयोगकर्ता myapp
उत्पन्न जार का मालिक है:
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 कुंजी लगाई ताकि जेनकिन्स लॉग इन कर सकें myapp@myserver
।
जैसा myapp
कि जार का मालिक है, मुझे लगता है कि एक विकल्प हो सकता है जो उपयोगकर्ता myapp
को कॉल करने की अनुमति देता है systemctl start/stop myapp
। दरअसल, मैं कॉल कर सकता हूं, systemctl status myapp
लेकिन start/stop
रूट पासवर्ड नहीं पूछा गया है)।
कोई सुझाव?
myapp
कॉल करने की अनुमति देने का कोई तरीका है sudo systemctl
?
sudo
गन्दा विचार करने का कारण नहीं देखता , यह आम तौर पर जिस तरह से आपको कुछ इस तरह से लागू करना चाहिए था। एक समूह बनाएं, अपने जेंकिंस उपयोगकर्ता को इसे असाइन करें औरvisudo
सेवा के प्रबंधन के लिए उस समूह को एक सीमित आदेश सेट प्रदान करें