Hintergrund :
Ich habe eine App namens myapp
mit 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, myapp
der einen /home/myapp
Ordner hat. Das generierte Glas wird aufgerufen myapp
und bei platziert /home/myapp
. Der Benutzer myapp
ist 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 myapp
der Besitzer des Glases glaube ich, dass es eine Option geben könnte, mit der der Benutzer myapp
anrufen kann systemctl start/stop myapp
. Eigentlich kann ich systemctl status myapp
aber nicht anrufen start/stop
(root Passwort wird abgefragt).
Irgendwelche Vorschläge?
myapp
anrufen zu dürfen sudo systemctl
?
sudo
chaotisch 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, undvisudo
geben Sie für diese Gruppe einen eingeschränkten Befehlssatz zum Verwalten des Dienstes an