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?
myappllamar sudo systemctlsolo para su propio servicio?
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 servicio