Jenkins Befehle als Root ausführen lassen

Jenkins Befehle als Root ausführen lassen

Ich habe einen Jenkins-Server, der sich per SSH bei meinem Produktionsserver anmeldet und einige Dienste mit systemctl restart myservice.service neu starten soll.

Ich habe von ähnlichen Problemen gelesen und die gängigste Lösung war diese:

jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service

und fügen Sie es in die Sudoers-Datei ein.

Ich habe auch hinzugefügt

Defaults:jenkins !requiretty

Meine Bereitstellungsdatei macht Folgendes:

sudo /bin/systemctl restart myservice.service

und dann erhalte ich trotz meiner Bemühungen immer noch die folgende Fehlermeldung:

sudo: no tty present and no askpass program specified

Ich habe gelesen, dass man beim SSH-Zugriff „-t“ verwenden kann, bin mir aber nicht sicher, wie ich das machen soll, da ich mehrere Befehle ausführe und einige davon keine Sudo-Befehle sind.

Hat also jemand eine gute Lösung, damit Jenkins meine Dienste neu starten kann? Ich möchte vermeiden, dass Jenkins Root als primären Benutzer verwendet.

Bearbeiten:

Dies war ein Problem auf meiner Seite. Mein Jenkins hat sich per SSH mit einem anderen Server verbunden und ist nicht als „Jenkins“ angemeldet, daher habe ich die Berechtigungen für den falschen Benutzer geändert. Die Lösung mit

jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service

funktioniert einwandfrei, solange es der richtige Benutzer ist.

verwandte Informationen