Hintergrund :
Ich habe eine App namens myappmit Spring-boot. Es besteht aus einer selbstausführbaren JAR-Datei und ist mit systemd-Diensten kompatibel. Jetzt versuche ich, es mit jenkins zu integrieren.
Was ich will:
Ich möchte, dass Jenkins in der Lage sind:
- Beenden Sie den Dienst.
- Tauschen Sie das Glas aus.
- Starten Sie den Dienst neu.
Problem:
Bisher können nur Sudoer Dienste starten / stoppen. Ich möchte nicht, dass Jenkins ein Sudoer ist (es scheint chaotisch).
Aktuelle Struktur:
Ich habe einen Benutzer, myappder einen /home/myappOrdner hat. Das generierte Glas wird aufgerufen myappund bei platziert /home/myapp. Der Benutzer myappist der Eigentümer des generierten JAR:
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
Ich habe einen SSH-Schlüssel platziert, damit sich Jenkins anmelden kann myapp@myserver.
Wie myappder Besitzer des Glases glaube ich, dass es eine Option geben könnte, mit der der Benutzer myappanrufen kann systemctl start/stop myapp. Eigentlich kann ich systemctl status myappaber nicht anrufen start/stop(root Passwort wird abgefragt).
Irgendwelche Vorschläge?
myappanrufen zu dürfen sudo systemctl?
sudochaotisch zu betrachten . Es ist im Allgemeinen die Art und Weise, wie Sie so etwas implementieren sollten. Erstellen Sie eine Gruppe, weisen Sie ihr Ihren jenkins-Benutzer zu, undvisudogeben Sie für diese Gruppe einen eingeschränkten Befehlssatz zum Verwalten des Dienstes an