पृष्ठभूमि :
मैंने एक ऐप बनाया है जिसका नाम 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सेवा के प्रबंधन के लिए उस समूह को एक सीमित आदेश सेट प्रदान करें