Fondo :
Creé una aplicación llamada myappcon Spring-boot. Consiste en un jar autoejecutable y es compatible con los servicios systemd. Ahora, estoy tratando de integrarlo con Jenkins.
Lo que quiero:
Quiero que Jenkins pueda:
- detener el servicio
- reemplazar el frasco
- reiniciar el servicio.
Problema:
Hasta ahora, solo los sudoers pueden iniciar / detener servicios. No quiero que Jenkins sea un sudoer (parece desordenado).
Estructura actual:
Tengo un usuario myappque tiene una /home/myappcarpeta. El jar generado se llama myappy se coloca en /home/myapp. El usuario myappes el propietario del jar generado:
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
Coloqué una clave ssh para que jenkins pueda iniciar sesión como myapp@myserver.
Como myappes el propietario del jar, creo que puede haber una opción que permita al usuario myappllamar systemctl start/stop myapp. En realidad, puedo llamar systemctl status myapppero no start/stop(se solicita la contraseña de root).
¿Alguna sugerencia?

sudodesordenado, generalmente es la forma en que debería implementar algo así. Cree un grupo, asígnele su usuario jenkins y usevisudoun conjunto de comandos limitado para ese grupo para administrar el serviciomyappllamarsudo systemctlsolo para su propio servicio?Respuestas:
sudoEs el camino a seguir. Cree un nuevo grupo (appadminpor ejemplo), coloque a sujenkinsusuario en él yvisudoagregue una nueva entrada con una lista limitada de comandos, por ejemplo:Si desea que el
appadmingrupo pueda operar el servicio sin ingresar una contraseña primero (útil si el usuario solo se autentica con una clave SSH, por ejemplo),fuente