Sfondo :
Ho creato un'app chiamata myappcon Spring-boot. È costituito da un vaso auto-eseguibile ed è compatibile con i servizi di sistema. Ora sto cercando di integrarlo con jenkins.
Quello che voglio:
Voglio che jenkins sia in grado di:
- interrompere il servizio.
- sostituire il barattolo.
- riavviare il servizio.
Problema:
Fino ad ora, solo i sudoer possono avviare / interrompere i servizi. Non voglio che Jenkins sia un sudoer (sembra disordinato).
Struttura attuale:
Ho un utente myappche ha una /home/myappcartella. Il jar generato viene chiamato myapped è posizionato in /home/myapp. L'utente myappè il proprietario del vaso generato:
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
Ho inserito una chiave ssh in modo che jenkins possa accedere come myapp@myserver.
Come myappè il proprietario del vaso, penso che potrebbe esserci un'opzione che consente all'utente myappdi chiamare systemctl start/stop myapp. In realtà, posso chiamare systemctl status myappma non start/stop(viene richiesta la password di root).
Eventuali suggerimenti?
myappdi chiamare sudo systemctlsolo per il proprio servizio?
sudodisordinato, è generalmente il modo in cui dovresti implementare qualcosa del genere. Crea un gruppo, assegna il tuo utente jenkins ad esso e usandovisudofornire un set di comandi limitato a quel gruppo per la gestione del servizio