Tło :
Stworzyłem aplikację o nazwie myappwith Spring-boot. Składa się z wykonalnego słoika i jest kompatybilny z usługami systemowymi. Teraz próbuję zintegrować go z Jenkins.
Czego chcę:
Chcę, żeby Jenkins mógł:
- zatrzymać usługę.
- wymienić słoik.
- uruchom ponownie usługę.
Problem:
Do tej pory tylko osoby sudoerskie mogły uruchamiać / zatrzymywać usługi. Nie chcę, żeby Jenkins był sudoerem (wydaje się bałagan).
Obecna struktura:
Mam użytkownika, myappktóry ma /home/myappfolder. Wygenerowany słoik jest wywoływany myappi umieszczany pod adresem /home/myapp. Użytkownik myappjest właścicielem wygenerowanego słoika:
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
Umieściłem klucz ssh, aby Jenkins mógł się zalogować jako myapp@myserver.
Podobnie myappjak właściciel słoika, myślę, że może istnieć opcja, która pozwala użytkownikowi myappzadzwonić systemctl start/stop myapp. Właściwie mogę dzwonić, systemctl status myappale nie mogę start/stop(wymagane jest hasło roota).
Jakieś sugestie?
myappna dzwonienie sudo systemctltylko dla własnej usługi?
sudobałagan, jest to na ogół sposób, w jaki powinieneś wdrożyć coś takiego. Utwórz grupę, przypisz do niej swojego użytkownika Jenkins i zavisudopomocą ograniczonego zestawu poleceń do zarządzania tą usługą