
У меня есть сервер jenkins, который подключается к моему производственному серверу через ssh и должен перезапускать некоторые службы с помощью systemctl restart myservice.service
Я читал о похожих проблемах, и наиболее распространенным решением было следующее:
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
и вставьте его в файл sudoers.
Я также добавил
Defaults:jenkins !requiretty
Мой файл развертывания делает следующее:
sudo /bin/systemctl restart myservice.service
и несмотря на все мои усилия я все равно получаю следующую ошибку:
sudo: no tty present and no askpass program specified
Я читал об использовании -t при работе по ssh, но не уверен, как это сделать, поскольку я выполняю несколько команд, и некоторые из них не являются командами sudo.
Так есть ли у кого-нибудь хорошее решение, чтобы позволить jenkins перезапустить мои службы? Я бы хотел избежать использования jenkins root в качестве основного пользователя.
Редактировать:
Это была проблема на моей стороне. Мой jenkins подключился по ssh к другому серверу и не вошел как "jenkins", поэтому я менял разрешения для неправильного пользователя. Решение с
jenkins ALL = NOPASSWD: /bin/systemctl restart myservice.service, /bin/systemctl restart myservice2.service
работает отлично, если им пользуется правильный пользователь.